diff options
-rw-r--r-- | telephony/common/com/android/internal/telephony/SmsApplication.java | 17 | ||||
-rw-r--r-- | telephony/java/android/telephony/SmsManager.java | 7 |
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; } |