summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYe Wen <ywen@google.com>2016-03-28 14:29:57 -0700
committerYe Wen <ywen@google.com>2016-03-28 14:39:02 -0700
commit4ec811e7484f8470885a45fd672875fd0e0c0143 (patch)
tree16044e6104019de6bc14f570ca4612c676c2a9fa
parenta2adc692f6793f583d4497877eaafde4824eb50a (diff)
downloadbase-4ec811e7484f8470885a45fd672875fd0e0c0143.tar.gz
Assign WRITE_SMS to UID 1001
The write permission check in telephony provider requires any packages in UID 1001 to have WRITE_SMS AppOps permission. Instead of assigning this to packages one by one, use the new AppOpsManager.setUidMode to give permission to the UID. b/27831867 Change-Id: I7a28d1ffe73339b9de23605fb0e4f0c857509996
-rw-r--r--src/java/com/android/internal/telephony/SmsApplication.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/SmsApplication.java b/src/java/com/android/internal/telephony/SmsApplication.java
index 34fcba03b732..675d9431db10 100644
--- a/src/java/com/android/internal/telephony/SmsApplication.java
+++ b/src/java/com/android/internal/telephony/SmsApplication.java
@@ -32,6 +32,7 @@ import android.content.res.Resources;
import android.net.Uri;
import android.os.Binder;
import android.os.Debug;
+import android.os.Process;
import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Telephony;
@@ -469,6 +470,11 @@ public final class SmsApplication {
MMS_SERVICE_PACKAGE_NAME);
assignWriteSmsPermissionToSystemApp(context, packageManager, appOps,
TELEPHONY_PROVIDER_PACKAGE_NAME);
+ // Give WRITE_SMS AppOps permission to UID 1001 which contains multiple
+ // apps, all of them should be able to write to telephony provider.
+ // This is to allow the proxy package permission check in telephony provider
+ // to pass.
+ assignWriteSmsPermissionToSystemUid(appOps, Process.PHONE_UID);
}
}
if (DEBUG_MULTIUSER) {
@@ -555,6 +561,11 @@ public final class SmsApplication {
MMS_SERVICE_PACKAGE_NAME);
assignWriteSmsPermissionToSystemApp(context, packageManager, appOps,
TELEPHONY_PROVIDER_PACKAGE_NAME);
+ // Give WRITE_SMS AppOps permission to UID 1001 which contains multiple
+ // apps, all of them should be able to write to telephony provider.
+ // This is to allow the proxy package permission check in telephony provider
+ // to pass.
+ assignWriteSmsPermissionToSystemUid(appOps, Process.PHONE_UID);
if (DEBUG_MULTIUSER) {
Log.i(LOG_TAG, "setDefaultApplicationInternal oldAppData=" + oldAppData);
@@ -629,6 +640,10 @@ public final class SmsApplication {
}
+ private static void assignWriteSmsPermissionToSystemUid(AppOpsManager appOps, int uid) {
+ appOps.setUidMode(AppOpsManager.OP_WRITE_SMS, uid, AppOpsManager.MODE_ALLOWED);
+ }
+
/**
* Tracks package changes and ensures that the default SMS app is always configured to be the
* preferred activity for SENDTO sms/mms intents.