Update the UIDs only after the native network is created am: a7d4766d0d am: b78402c81f am: 37e7a6f114

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1973861

Change-Id: I41eab4c3a3de41eee6e48e2dabb0363b5a9a7e7a
This commit is contained in:
Chalard Jean 2022-02-07 00:34:23 +00:00 • committed by Automerger Merge Worker
commit e1331a9c48

View file

@ -7043,7 +7043,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
nai.notifyRegistered();
NetworkInfo networkInfo = nai.networkInfo;
updateNetworkInfo(nai, networkInfo);
updateUids(nai, null, nai.networkCapabilities);
updateVpnUids(nai, null, nai.networkCapabilities);
}
private class NetworkOfferInfo implements IBinder.DeathRecipient {
@ -7679,7 +7679,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
updateNetworkPermissions(nai, newNc);
final NetworkCapabilities prevNc = nai.getAndSetNetworkCapabilities(newNc);
updateUids(nai, prevNc, newNc);
updateVpnUids(nai, prevNc, newNc);
updateAccessUids(nai, prevNc, newNc);
nai.updateScoreForNetworkAgentUpdate();
if (nai.getCurrentScore() == oldScore && newNc.equalRequestableCapabilities(prevNc)) {
@ -7849,12 +7850,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
}
private void updateUids(@NonNull NetworkAgentInfo nai, @Nullable NetworkCapabilities prevNc,
@Nullable NetworkCapabilities newNc) {
updateVpnUids(nai, prevNc, newNc);
updateAccessUids(nai, prevNc, newNc);
}
private void updateVpnUids(@NonNull NetworkAgentInfo nai, @Nullable NetworkCapabilities prevNc,
@Nullable NetworkCapabilities newNc) {
Set<UidRange> prevRanges = null == prevNc ? null : prevNc.getUidRanges();
@ -7911,7 +7906,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
} catch (Exception e) {
// Never crash!
loge("Exception in updateUids: ", e);
loge("Exception in updateVpnUids: ", e);
}
}
@ -7950,6 +7945,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
intsToUidRangeStableParcels(toRemove),
PREFERENCE_ORDER_IRRELEVANT_BECAUSE_NOT_DEFAULT));
}
} catch (ServiceSpecificException e) {
// Has the interface disappeared since the network was built ?
Log.i(TAG, "Can't set access UIDs for network " + nai.network, e);
} catch (RemoteException e) {
// Netd died. This usually causes a runtime restart anyway.
}
@ -8864,6 +8862,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
networkAgent.created = true;
networkAgent.onNetworkCreated();
updateAccessUids(networkAgent, null, networkAgent.networkCapabilities);
}
if (!networkAgent.everConnected && state == NetworkInfo.State.CONNECTED) {
@ -8917,7 +8916,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
} else if (state == NetworkInfo.State.DISCONNECTED) {
networkAgent.disconnect();
if (networkAgent.isVPN()) {
updateUids(networkAgent, networkAgent.networkCapabilities, null);
updateVpnUids(networkAgent, networkAgent.networkCapabilities, null);
}
disconnectAndDestroyNetwork(networkAgent);
if (networkAgent.isVPN()) {