diff options
| author | 2010-12-09 09:11:06 -0800 | |
|---|---|---|
| committer | 2010-12-09 09:11:06 -0800 | |
| commit | d9c17cc1178bc09d30eead05bf5be7ec5a05cbe7 (patch) | |
| tree | 0ca78a99657993564661a624675e3a004af03f49 | |
| parent | 0a5ae453e50144b31c7f544714feb5bbc7b77d18 (diff) | |
| parent | e59e0309a1301908eae0075db02413fda90848d5 (diff) | |
merge from gingerbread
Change-Id: I12d6ef65986db41e658bf8d476a8e18c4dd89917
| -rw-r--r-- | core/java/android/provider/Downloads.java | 9 | ||||
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 28 | ||||
| -rwxr-xr-x | packages/DefaultContainerService/AndroidManifest.xml | 1 |
3 files changed, 31 insertions, 7 deletions
diff --git a/core/java/android/provider/Downloads.java b/core/java/android/provider/Downloads.java index 72bf6b08d684..1ca6d3a8c06b 100644 --- a/core/java/android/provider/Downloads.java +++ b/core/java/android/provider/Downloads.java @@ -600,7 +600,14 @@ public final class Downloads { "android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED"; /** - * The permission to directly access the download manager's cache directory + * The permission to access the all the downloads in the manager. + */ + public static final String PERMISSION_ACCESS_ALL = + "android.permission.ACCESS_ALL_DOWNLOADS"; + + /** + * The permission to directly access the download manager's cache + * directory */ public static final String PERMISSION_CACHE = "android.permission.ACCESS_CACHE_FILESYSTEM"; diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 1f42fbd2eb66..fb4dff8e5dd0 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -3079,13 +3079,18 @@ public final class BatteryStatsImpl extends BatteryStats { } } - void readExcessivePowerFromParcelLocked(Parcel in) { + boolean readExcessivePowerFromParcelLocked(Parcel in) { final int N = in.readInt(); if (N == 0) { mExcessivePower = null; - return; + return true; } + if (N > 10000) { + Slog.w(TAG, "File corrupt: too many excessive power entries " + N); + return false; + } + mExcessivePower = new ArrayList<ExcessivePower>(); for (int i=0; i<N; i++) { ExcessivePower ew = new ExcessivePower(); @@ -3094,6 +3099,7 @@ public final class BatteryStatsImpl extends BatteryStats { ew.usedTime = in.readLong(); mExcessivePower.add(ew); } + return true; } void writeToParcelLocked(Parcel out) { @@ -4689,7 +4695,7 @@ public final class BatteryStatsImpl extends BatteryStats { } int NW = in.readInt(); - if (NW > 10000) { + if (NW > 100) { Slog.w(TAG, "File corrupt: too many wake locks " + NW); return; } @@ -4707,7 +4713,7 @@ public final class BatteryStatsImpl extends BatteryStats { } int NP = in.readInt(); - if (NP > 10000) { + if (NP > 1000) { Slog.w(TAG, "File corrupt: too many sensors " + NP); return; } @@ -4720,7 +4726,7 @@ public final class BatteryStatsImpl extends BatteryStats { } NP = in.readInt(); - if (NP > 10000) { + if (NP > 1000) { Slog.w(TAG, "File corrupt: too many processes " + NP); return; } @@ -4731,6 +4737,10 @@ public final class BatteryStatsImpl extends BatteryStats { p.mSystemTime = p.mLoadedSystemTime = in.readLong(); p.mStarts = p.mLoadedStarts = in.readInt(); int NSB = in.readInt(); + if (NSB > 100) { + Slog.w(TAG, "File corrupt: too many speed bins " + NSB); + return; + } p.mSpeedBins = new SamplingCounter[NSB]; for (int i=0; i<NSB; i++) { if (in.readInt() != 0) { @@ -4738,7 +4748,9 @@ public final class BatteryStatsImpl extends BatteryStats { p.mSpeedBins[i].readSummaryFromParcelLocked(in); } } - p.readExcessivePowerFromParcelLocked(in); + if (!p.readExcessivePowerFromParcelLocked(in)) { + return; + } } NP = in.readInt(); @@ -4751,6 +4763,10 @@ public final class BatteryStatsImpl extends BatteryStats { Uid.Pkg p = u.getPackageStatsLocked(pkgName); p.mWakeups = p.mLoadedWakeups = in.readInt(); final int NS = in.readInt(); + if (NS > 1000) { + Slog.w(TAG, "File corrupt: too many services " + NS); + return; + } for (int is = 0; is < NS; is++) { String servName = in.readString(); Uid.Pkg.Serv s = u.getServiceStatsLocked(pkgName, servName); diff --git a/packages/DefaultContainerService/AndroidManifest.xml b/packages/DefaultContainerService/AndroidManifest.xml index 078daa76d501..b0597c4e6ee4 100755 --- a/packages/DefaultContainerService/AndroidManifest.xml +++ b/packages/DefaultContainerService/AndroidManifest.xml @@ -1,6 +1,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.defcontainer"> <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/> + <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS"/> <uses-permission android:name="android.permission.ASEC_ACCESS"/> <uses-permission android:name="android.permission.ASEC_CREATE"/> <uses-permission android:name="android.permission.ASEC_DESTROY"/> |