diff options
| author | 2009-09-10 19:13:52 -0400 | |
|---|---|---|
| committer | 2009-09-10 19:13:52 -0400 | |
| commit | 68f591b17537cb437ca0b25d00a6d3d08e507abb (patch) | |
| tree | 60922c9e995a0132adf4362ada175365fcc0bfad | |
| parent | 181b31a0d87d525ea64102a965210331e0c6885b (diff) | |
| parent | 5a8a1151e267b29978f219f9569fdfc5e74cc210 (diff) | |
Merge change 24607 into eclair
* changes:
Try not to crash the system server because of corrupt restore data
| -rw-r--r-- | services/java/com/android/server/PackageManagerBackupAgent.java | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/services/java/com/android/server/PackageManagerBackupAgent.java b/services/java/com/android/server/PackageManagerBackupAgent.java index 786f42305c96..772ddeb13fec 100644 --- a/services/java/com/android/server/PackageManagerBackupAgent.java +++ b/services/java/com/android/server/PackageManagerBackupAgent.java @@ -327,6 +327,13 @@ public class PackageManagerBackupAgent extends BackupAgent { try { int num = in.readInt(); Log.v(TAG, " ... unflatten read " + num); + + // Sensical? + if (num > 20) { + Log.e(TAG, "Suspiciously large sig count in restore data; aborting"); + throw new IllegalStateException("Bad restore state"); + } + sigs = new Signature[num]; for (int i = 0; i < num; i++) { int len = in.readInt(); |