diff options
Diffstat (limited to 'services/appwidget/java/com/android')
-rw-r--r-- | services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 87b1d32..7a67d63 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -843,6 +843,15 @@ class AppWidgetServiceImpl { throw new IllegalArgumentException("Unknown component " + componentName); } + // Ensure that the service specified by the passed intent belongs to the same package + // as provides the passed widget id. + String widgetIdPackage = id.provider.info.provider.getPackageName(); + String servicePackage = componentName.getPackageName(); + if (!servicePackage.equals(widgetIdPackage)) { + throw new SecurityException("Specified intent doesn't belong to the same package" + + " as the provided AppWidget id"); + } + // If there is already a connection made for this service intent, then disconnect from // that first. (This does not allow multiple connections to the same service under // the same key) |