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

This commit is contained in:
TreeHugger Robot
2020-02-06 01:04:32 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 14 deletions

View File

@@ -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)

View File

@@ -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;
}