diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 2d6b4a248f137..b9e7149d881a7 100755 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -8398,6 +8398,10 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public Bitmap getTaskDescriptionIcon(String filename) { + if (!FileUtils.isValidExtFilename(filename) + || !filename.contains(ActivityRecord.ACTIVITY_ICON_SUFFIX)) { + throw new IllegalArgumentException("Bad filename: " + filename); + } return mTaskPersister.getTaskDescriptionIcon(filename); } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 2db7cec611399..198273e8fd800 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -79,7 +79,7 @@ final class ActivityRecord { private static final String ATTR_LAUNCHEDFROMPACKAGE = "launched_from_package"; private static final String ATTR_RESOLVEDTYPE = "resolved_type"; private static final String ATTR_COMPONENTSPECIFIED = "component_specified"; - private static final String ACTIVITY_ICON_SUFFIX = "_activity_icon_"; + static final String ACTIVITY_ICON_SUFFIX = "_activity_icon_"; final ActivityManagerService service; // owner final IApplicationToken.Stub appToken; // window manager token