Merge "Move server reservation validation to L2capNetworkSpecifier" into main
This commit is contained in:
commit
3687f0e65e
2 changed files with 23 additions and 19 deletions
|
|
@ -170,6 +170,28 @@ public final class L2capNetworkSpecifier extends NetworkSpecifier implements Par
|
|||
return mPsm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given L2capNetworkSpecifier is valid as part of a server network
|
||||
* reservation request.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public boolean isValidServerReservationSpecifier() {
|
||||
// The ROLE_SERVER offer can be satisfied by a ROLE_ANY request.
|
||||
if (mRole != ROLE_SERVER) return false;
|
||||
|
||||
// HEADER_COMPRESSION_ANY is never valid in a request.
|
||||
if (mHeaderCompression == HEADER_COMPRESSION_ANY) return false;
|
||||
|
||||
// Remote address must be null for ROLE_SERVER requests.
|
||||
if (mRemoteAddress != null) return false;
|
||||
|
||||
// reservation must allocate a PSM, so only PSM_ANY can be passed.
|
||||
if (mPsm != PSM_ANY) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given L2capNetworkSpecifier is valid as part of a client network request.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ package com.android.server;
|
|||
|
||||
import static android.content.pm.PackageManager.FEATURE_BLUETOOTH_LE;
|
||||
import static android.net.L2capNetworkSpecifier.HEADER_COMPRESSION_ANY;
|
||||
import static android.net.L2capNetworkSpecifier.PSM_ANY;
|
||||
import static android.net.L2capNetworkSpecifier.ROLE_CLIENT;
|
||||
import static android.net.L2capNetworkSpecifier.ROLE_SERVER;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED;
|
||||
|
|
@ -127,23 +126,6 @@ public class L2capNetworkProvider {
|
|||
CAPABILITIES = caps;
|
||||
}
|
||||
|
||||
// TODO: consider moving this into L2capNetworkSpecifier as #isValidServerReservation().
|
||||
private boolean isValidL2capServerSpecifier(L2capNetworkSpecifier l2capSpec) {
|
||||
// The ROLE_SERVER offer can be satisfied by a ROLE_ANY request.
|
||||
if (l2capSpec.getRole() != ROLE_SERVER) return false;
|
||||
|
||||
// HEADER_COMPRESSION_ANY is never valid in a request.
|
||||
if (l2capSpec.getHeaderCompression() == HEADER_COMPRESSION_ANY) return false;
|
||||
|
||||
// remoteAddr must be null for ROLE_SERVER requests.
|
||||
if (l2capSpec.getRemoteAddress() != null) return false;
|
||||
|
||||
// reservation must allocate a PSM, so only PSM_ANY can be passed.
|
||||
if (l2capSpec.getPsm() != PSM_ANY) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNetworkNeeded(NetworkRequest request) {
|
||||
// The NetworkSpecifier is guaranteed to be either null or an L2capNetworkSpecifier, so
|
||||
|
|
@ -151,7 +133,7 @@ public class L2capNetworkProvider {
|
|||
final L2capNetworkSpecifier specifier =
|
||||
(L2capNetworkSpecifier) request.getNetworkSpecifier();
|
||||
if (specifier == null) return;
|
||||
if (!isValidL2capServerSpecifier(specifier)) {
|
||||
if (!specifier.isValidServerReservationSpecifier()) {
|
||||
Log.i(TAG, "Ignoring invalid reservation request: " + request);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue