Handle bad package name arguments sensically
Don't blithly go ahead and assume package name arguments are non-null, and don't continue to do a bunch of work after an early failure on invalid non-null package names. Bug 13745101 Change-Id: I12ccae343066b39162dedeb46dc58869f55be0ba
This commit is contained in:
@@ -700,7 +700,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
// Just post MCS_BOUND message to trigger processing
|
// Just post MCS_BOUND message to trigger processing
|
||||||
// of next pending install.
|
// of next pending install.
|
||||||
if (DEBUG_SD_INSTALL) Log.i(TAG,
|
if (DEBUG_SD_INSTALL) Log.i(TAG,
|
||||||
"Posting MCS_BOUND for next woek");
|
"Posting MCS_BOUND for next work");
|
||||||
mHandler.sendEmptyMessage(MCS_BOUND);
|
mHandler.sendEmptyMessage(MCS_BOUND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7533,32 +7533,34 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
mSuccess = getPackageSizeInfoLI(mStats.packageName, mStats.userHandle, mStats);
|
mSuccess = getPackageSizeInfoLI(mStats.packageName, mStats.userHandle, mStats);
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean mounted;
|
if (mSuccess) {
|
||||||
if (Environment.isExternalStorageEmulated()) {
|
final boolean mounted;
|
||||||
mounted = true;
|
if (Environment.isExternalStorageEmulated()) {
|
||||||
} else {
|
mounted = true;
|
||||||
final String status = Environment.getExternalStorageState();
|
} else {
|
||||||
mounted = (Environment.MEDIA_MOUNTED.equals(status)
|
final String status = Environment.getExternalStorageState();
|
||||||
|| Environment.MEDIA_MOUNTED_READ_ONLY.equals(status));
|
mounted = (Environment.MEDIA_MOUNTED.equals(status)
|
||||||
}
|
|| Environment.MEDIA_MOUNTED_READ_ONLY.equals(status));
|
||||||
|
}
|
||||||
|
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
final UserEnvironment userEnv = new UserEnvironment(mStats.userHandle);
|
final UserEnvironment userEnv = new UserEnvironment(mStats.userHandle);
|
||||||
|
|
||||||
mStats.externalCacheSize = calculateDirectorySize(mContainerService,
|
mStats.externalCacheSize = calculateDirectorySize(mContainerService,
|
||||||
userEnv.buildExternalStorageAppCacheDirs(mStats.packageName));
|
userEnv.buildExternalStorageAppCacheDirs(mStats.packageName));
|
||||||
|
|
||||||
mStats.externalDataSize = calculateDirectorySize(mContainerService,
|
mStats.externalDataSize = calculateDirectorySize(mContainerService,
|
||||||
userEnv.buildExternalStorageAppDataDirs(mStats.packageName));
|
userEnv.buildExternalStorageAppDataDirs(mStats.packageName));
|
||||||
|
|
||||||
// Always subtract cache size, since it's a subdirectory
|
// Always subtract cache size, since it's a subdirectory
|
||||||
mStats.externalDataSize -= mStats.externalCacheSize;
|
mStats.externalDataSize -= mStats.externalCacheSize;
|
||||||
|
|
||||||
mStats.externalMediaSize = calculateDirectorySize(mContainerService,
|
mStats.externalMediaSize = calculateDirectorySize(mContainerService,
|
||||||
userEnv.buildExternalStorageAppMediaDirs(mStats.packageName));
|
userEnv.buildExternalStorageAppMediaDirs(mStats.packageName));
|
||||||
|
|
||||||
mStats.externalObbSize = calculateDirectorySize(mContainerService,
|
mStats.externalObbSize = calculateDirectorySize(mContainerService,
|
||||||
userEnv.buildExternalStorageAppObbDirs(mStats.packageName));
|
userEnv.buildExternalStorageAppObbDirs(mStats.packageName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10271,6 +10273,9 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
final IPackageStatsObserver observer) {
|
final IPackageStatsObserver observer) {
|
||||||
mContext.enforceCallingOrSelfPermission(
|
mContext.enforceCallingOrSelfPermission(
|
||||||
android.Manifest.permission.GET_PACKAGE_SIZE, null);
|
android.Manifest.permission.GET_PACKAGE_SIZE, null);
|
||||||
|
if (packageName == null) {
|
||||||
|
throw new IllegalArgumentException("Attempt to get size of null packageName");
|
||||||
|
}
|
||||||
|
|
||||||
PackageStats stats = new PackageStats(packageName, userHandle);
|
PackageStats stats = new PackageStats(packageName, userHandle);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user