Merge "Fix permission check for get/setSmscAddress."

This commit is contained in:
Amit Mahajan
2020-03-03 19:02:42 +00:00
committed by Gerrit Code Review
2 changed files with 20 additions and 4 deletions

View File

@@ -1051,7 +1051,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
@@ -1060,8 +1061,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)) {

View File

@@ -2743,7 +2743,7 @@ public final class SmsManager {
getSubscriptionId(), null);
}
} catch (RemoteException ex) {
// ignore it
throw new RuntimeException(ex);
}
return smsc;
}
@@ -2765,7 +2765,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)
@@ -2777,7 +2778,7 @@ public final class SmsManager {
smsc, getSubscriptionId(), null);
}
} catch (RemoteException ex) {
// ignore it
throw new RuntimeException(ex);
}
return false;
}