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

Commit 39dcf2a1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update permission check to use Statsd's uid"

parents 846e0a0b e2e1335f
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -38,11 +38,15 @@ public class StatsCompanion {
    private static final String TAG = "StatsCompanion";
    private static final boolean DEBUG = false;

    static void enforceStatsCompanionPermission(Context context) {
    private static final int AID_STATSD = 1066;

    static void enforceStatsdCallingUid() {
        if (Binder.getCallingPid() == Process.myPid()) {
            return;
        }
        context.enforceCallingPermission(android.Manifest.permission.STATSCOMPANION, null);
        if (Binder.getCallingUid() != AID_STATSD) {
            throw new SecurityException("Not allowed to access StatsCompanion");
        }
    }

    /**
@@ -114,7 +118,7 @@ public class StatsCompanion {

        @Override
        public void sendDataBroadcast(long lastReportTimeNs) {
            enforceStatsCompanionPermission(mContext);
            enforceStatsdCallingUid();
            Intent intent = new Intent();
            intent.putExtra(EXTRA_LAST_REPORT_TIME, lastReportTimeNs);
            try {
@@ -126,7 +130,7 @@ public class StatsCompanion {

        @Override
        public void sendActiveConfigsChangedBroadcast(long[] configIds) {
            enforceStatsCompanionPermission(mContext);
            enforceStatsdCallingUid();
            Intent intent = new Intent();
            intent.putExtra(StatsManager.EXTRA_STATS_ACTIVE_CONFIG_KEYS, configIds);
            try {
@@ -142,7 +146,7 @@ public class StatsCompanion {
        @Override
        public void sendSubscriberBroadcast(long configUid, long configId, long subscriptionId,
                long subscriptionRuleId, String[] cookies, StatsDimensionsValue dimensionsValue) {
            enforceStatsCompanionPermission(mContext);
            enforceStatsdCallingUid();
            Intent intent =
                    new Intent()
                            .putExtra(StatsManager.EXTRA_STATS_CONFIG_UID, configUid)
+9 −9
Original line number Diff line number Diff line
@@ -398,7 +398,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void setAnomalyAlarm(long timestampMs) {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) Slog.d(TAG, "Setting anomaly alarm for " + timestampMs);
        final long callingToken = Binder.clearCallingIdentity();
        try {
@@ -414,7 +414,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void cancelAnomalyAlarm() {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) Slog.d(TAG, "Cancelling anomaly alarm");
        final long callingToken = Binder.clearCallingIdentity();
        try {
@@ -426,7 +426,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void setAlarmForSubscriberTriggering(long timestampMs) {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) {
            Slog.d(TAG,
                    "Setting periodic alarm in about " + (timestampMs
@@ -445,7 +445,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void cancelAlarmForSubscriberTriggering() {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) {
            Slog.d(TAG, "Cancelling periodic alarm");
        }
@@ -459,7 +459,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void setPullingAlarm(long nextPullTimeMs) {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) {
            Slog.d(TAG, "Setting pulling alarm in about "
                    + (nextPullTimeMs - SystemClock.elapsedRealtime()));
@@ -477,7 +477,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void cancelPullingAlarm() {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) {
            Slog.d(TAG, "Cancelling pulling alarm");
        }
@@ -491,7 +491,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public void statsdReady() {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        if (DEBUG) {
            Slog.d(TAG, "learned that statsdReady");
        }
@@ -503,7 +503,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override
    public void triggerUidSnapshot() {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        synchronized (sStatsdLock) {
            final long token = Binder.clearCallingIdentity();
            try {
@@ -518,7 +518,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {

    @Override // Binder call
    public boolean checkPermission(String permission, int pid, int uid) {
        StatsCompanion.enforceStatsCompanionPermission(mContext);
        StatsCompanion.enforceStatsdCallingUid();
        return mContext.checkPermission(permission, pid, uid) == PackageManager.PERMISSION_GRANTED;
    }