Allow the System UID to unregister ConnDiags CBs.

This CL updates ConnectivityService to allow the System's UID to
unregister ConnectivityDiagnostics callbacks. Preivously, only the
registrant was allowed to unregister them - this caused problems for
callbacks that were attempted to be unregistered via binderDied() when
the registrant app dies.

Bug: 159912975
Bug: 174713659
Test: manually verified
Change-Id: I20d0cad5f902708d366aa703c2893b0ea3e55052
This commit is contained in:
Cody Kesting
2020-12-02 12:16:56 -08:00
parent dad3c929a3
commit 054451e170

View File

@@ -8092,8 +8092,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
final NetworkRequestInfo nri = cbInfo.mRequestInfo;
if (uid != nri.mUid) {
if (VDBG) loge("Different uid than registrant attempting to unregister cb");
// Caller's UID must either be the registrants (if they are unregistering) or the System's
// (if the Binder died)
if (uid != nri.mUid && uid != Process.SYSTEM_UID) {
if (DBG) loge("Uid(" + uid + ") not registrant's (" + nri.mUid + ") or System's");
return;
}