summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android (Google) Code Review <android-gerrit@google.com> 2009-09-10 19:13:52 -0400
committer Android (Google) Code Review <android-gerrit@google.com> 2009-09-10 19:13:52 -0400
commit68f591b17537cb437ca0b25d00a6d3d08e507abb (patch)
tree60922c9e995a0132adf4362ada175365fcc0bfad
parent181b31a0d87d525ea64102a965210331e0c6885b (diff)
parent5a8a1151e267b29978f219f9569fdfc5e74cc210 (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.java7
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();