summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telephony/common/com/android/internal/telephony/SmsApplication.java17
-rw-r--r--telephony/java/android/telephony/SmsManager.java7
2 files changed, 20 insertions, 4 deletions
diff --git a/telephony/common/com/android/internal/telephony/SmsApplication.java b/telephony/common/com/android/internal/telephony/SmsApplication.java
index bb6f154335a9..d54c054e2f82 100644
--- a/telephony/common/com/android/internal/telephony/SmsApplication.java
+++ b/telephony/common/com/android/internal/telephony/SmsApplication.java
@@ -1057,7 +1057,8 @@ public final class SmsApplication {
}
/**
- * Check if a package is default sms app (or equivalent, like bluetooth)
+ * Check if a package is default sms app (or equivalent, like bluetooth), and verify that
+ * packageName belongs to the caller.
*
* @param context context from the calling app
* @param packageName the name of the package to be checked
@@ -1066,8 +1067,22 @@ public final class SmsApplication {
@UnsupportedAppUsage
public static boolean isDefaultSmsApplication(Context context, String packageName) {
if (packageName == null) {
+ Log.e(LOG_TAG, "isDefaultSmsApplication: packageName is null");
return false;
}
+ try {
+ if (Binder.getCallingUid()
+ == context.getPackageManager().getPackageUid(packageName, 0)) {
+ Log.e(LOG_TAG, "isDefaultSmsApplication: " + packageName + " calling uid "
+ + context.getPackageManager().getPackageUid(packageName, 0)
+ + " does not match calling uid " + Binder.getCallingUid());
+ return false;
+ }
+ } catch (NameNotFoundException ex) {
+ Log.e(LOG_TAG, "isDefaultSmsApplication: packageName " + packageName + " not found");
+ return false;
+ }
+
final String defaultSmsPackage = getDefaultSmsApplicationPackageName(context);
if ((defaultSmsPackage != null && defaultSmsPackage.equals(packageName))
|| BLUETOOTH_PACKAGE_NAME.equals(packageName)) {
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 8479db64799c..87d0c7f9edfc 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -2898,7 +2898,7 @@ public final class SmsManager {
getSubscriptionId(), null);
}
} catch (RemoteException ex) {
- // ignore it
+ throw new RuntimeException(ex);
}
return smsc;
}
@@ -2920,7 +2920,8 @@ public final class SmsManager {
* </p>
*
* @param smsc the SMSC address string.
- * @return true for success, false otherwise.
+ * @return true for success, false otherwise. Failure can be due to caller not having the
+ * appropriate permission, or modem returning an error.
*/
@SuppressAutoDoc // for carrier privileges and default SMS application.
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
@@ -2932,7 +2933,7 @@ public final class SmsManager {
smsc, getSubscriptionId(), null);
}
} catch (RemoteException ex) {
- // ignore it
+ throw new RuntimeException(ex);
}
return false;
}