From e510fa4c0b56814aadd938596847aec9ab0290cc Mon Sep 17 00:00:00 2001 From: David Brown Date: Fri, 17 Jun 2011 01:33:36 -0700 Subject: [PATCH] Fix permissions check in IccSmsInterfaceManager.sendText() In android.internal.telephony.IccSmsInterfaceManager, we currently use enforceCallingPermission() rather than enforceCallingOrSelfPermission() to enforce the SEND_SMS permission. The difference is that enforceCallingPermission() will ALWAYS throw a SecurityException if you're not handling an IPC, i.e. if the request is from the same process as the telephony framework. In other words, the current code prevents the phone app from ever using SmsManager.sendTextMessage() :-( This change fixes IccSmsInterfaceManager.sendText() to use enforceCallingOrSelfPermission(), and I confirmed I can now send SMSes from the phone app. NOTE there are a bunch of other uses of enforceCallingPermission() in the telephony framework (all SMS-related) that we probably want to fix too, although I'm fixing just this one for now since it's blocking a hi-pri phone UI feature. I opened bug 4686733 to cover the rest of the cleanup, though. Bug: 4686733 Change-Id: Iaffcf62c54493fa4961fb20894c974697f26e3a7 --- .../com/android/internal/telephony/IccSmsInterfaceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telephony/java/com/android/internal/telephony/IccSmsInterfaceManager.java b/telephony/java/com/android/internal/telephony/IccSmsInterfaceManager.java index 5fef6de70a25b..9763265c588fe 100644 --- a/telephony/java/com/android/internal/telephony/IccSmsInterfaceManager.java +++ b/telephony/java/com/android/internal/telephony/IccSmsInterfaceManager.java @@ -112,7 +112,7 @@ public abstract class IccSmsInterfaceManager extends ISms.Stub { */ public void sendText(String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) { - mPhone.getContext().enforceCallingPermission( + mPhone.getContext().enforceCallingOrSelfPermission( "android.permission.SEND_SMS", "Sending SMS message"); if (Log.isLoggable("SMS", Log.VERBOSE)) {