aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2014-12-01 16:11:32 -0800
committerAdnan <adnan@cyngn.com>2014-12-01 17:42:16 -0800
commit023e93eec9f7f6c91fc2fa8b54a1b66c91567b20 (patch)
treec77f89eeeed77cc533647a54e3866a3d92213795
parent1554a1714e55ecab70a69384a5578502b6c45cab (diff)
downloadandroid_frameworks_opt_telephony-023e93eec9f7f6c91fc2fa8b54a1b66c91567b20.tar.gz
android_frameworks_opt_telephony-023e93eec9f7f6c91fc2fa8b54a1b66c91567b20.tar.bz2
android_frameworks_opt_telephony-023e93eec9f7f6c91fc2fa8b54a1b66c91567b20.zip
Telephony: Find creator package if sms is sent from systemuid.
Change-Id: I72a8e479eab903a8354b5a3eb5aaf11a41570294
-rw-r--r--src/java/com/android/internal/telephony/SMSDispatcher.java21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/java/com/android/internal/telephony/SMSDispatcher.java b/src/java/com/android/internal/telephony/SMSDispatcher.java
index 9dee86342..3ae3de5e2 100644
--- a/src/java/com/android/internal/telephony/SMSDispatcher.java
+++ b/src/java/com/android/internal/telephony/SMSDispatcher.java
@@ -38,6 +38,7 @@ import android.os.AsyncResult;
import android.os.Binder;
import android.os.Handler;
import android.os.Message;
+import android.os.Process;
import android.os.SystemProperties;
import android.provider.Settings;
import android.provider.Telephony;
@@ -331,6 +332,16 @@ public abstract class SMSDispatcher extends Handler {
}
}
+ private static boolean isSystemUid(Context context, String pkgName) {
+ final PackageManager packageManager = context.getPackageManager();
+ try {
+ return packageManager.getPackageInfo(pkgName, 0)
+ .applicationInfo.uid == Process.SYSTEM_UID;
+ } catch (PackageManager.NameNotFoundException e) {
+ return false;
+ }
+ }
+
/**
* Called when SMS send completes. Broadcasts a sentIntent on success.
* On failure, either sets up retries or broadcasts a sentIntent with
@@ -353,8 +364,16 @@ public abstract class SMSDispatcher extends Handler {
if (ar.exception == null) {
if (DBG) Rlog.d(TAG, "SMS send complete. Broadcasting intent: " + sentIntent);
+ String packageName = tracker.mAppInfo.applicationInfo.packageName;
+ // System UID maps to multiple packages. Try to narrow it
+ // down to an actual sender if possible
+ if (isSystemUid(mContext, packageName) && sentIntent != null &&
+ sentIntent.getCreatorPackage() != null) {
+ packageName = sentIntent.getCreatorPackage();
+ }
+
if (SmsApplication.shouldWriteMessageForPackage(
- tracker.mAppInfo.applicationInfo.packageName, mContext)) {
+ packageName, mContext)) {
// Persist it into the SMS database as a sent message
// so the user can see it in their default app.
tracker.writeSentMessage(mContext);