Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c1bcbca authored by Junyu Lai's avatar Junyu Lai
Browse files

Clear calling identity when notifying alert/limit reached

When the NetworkStatsProvider reports alert/limit reached,
NetworkStatsService will relay the event to other services
such as NPMS or NMS. The identity should be cleared before
calling into other services.

Test: TH
Bug: 181106917
Change-Id: I2a7b273dc30156a84b30566319894ec3a42d4429
parent 02842ed8
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.FileRotator;
import com.android.internal.util.IndentingPrintWriter;
import com.android.net.module.util.BinderUtils;
import com.android.server.EventLogTags;
import com.android.server.LocalServices;

@@ -2104,14 +2105,18 @@ public class NetworkStatsService extends INetworkStatsService.Stub {

        @Override
        public void notifyAlertReached() throws RemoteException {
            mAlertObserver.limitReached(LIMIT_GLOBAL_ALERT, null /* unused */);
            // This binder object can only have been obtained by a process that holds
            // NETWORK_STATS_PROVIDER. Thus, no additional permission check is required.
            BinderUtils.withCleanCallingIdentity(() ->
                    mAlertObserver.limitReached(LIMIT_GLOBAL_ALERT, null /* unused */));
        }

        @Override
        public void notifyWarningOrLimitReached() {
            Log.d(TAG, mTag + ": notifyWarningOrLimitReached");
            BinderUtils.withCleanCallingIdentity(() ->
                    LocalServices.getService(NetworkPolicyManagerInternal.class)
                    .onStatsProviderWarningOrLimitReached(mTag);
                            .onStatsProviderWarningOrLimitReached(mTag));
        }

        @Override