summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Noack <noackjr@google.com>2019-09-10 11:34:39 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-09-10 11:34:39 -0700
commit53980bd755405f13357e82d5b4ad9fbe4984cbf7 (patch)
tree39a3f8a28908e4472402613f4ccb3205ef128087
parente405ae5c2e53cb0d619d2176f14f22e2ac593a57 (diff)
parentec3dd06219453c3919890c4e68061eb40a38a881 (diff)
downloadmultidex-53980bd755405f13357e82d5b4ad9fbe4984cbf7.tar.gz
Merge "Force re-extraction if dex number is invalid" am: 6944597270 am: 92d835c69a am: f772220347
am: ec3dd06219 Change-Id: I348856e44ba75b37ff12058355f632fb1d928cab
-rw-r--r--library/src/androidx/multidex/MultiDexExtractor.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/library/src/androidx/multidex/MultiDexExtractor.java b/library/src/androidx/multidex/MultiDexExtractor.java
index 2b96113..a63d724 100644
--- a/library/src/androidx/multidex/MultiDexExtractor.java
+++ b/library/src/androidx/multidex/MultiDexExtractor.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log;
+
import java.io.BufferedOutputStream;
import java.io.Closeable;
import java.io.File;
@@ -177,7 +178,11 @@ final class MultiDexExtractor implements Closeable {
final String extractedFilePrefix = sourceApk.getName() + EXTRACTED_NAME_EXT;
SharedPreferences multiDexPreferences = getMultiDexPreferences(context);
- int totalDexNumber = multiDexPreferences.getInt(prefsKeyPrefix + KEY_DEX_NUMBER, 1);
+ int totalDexNumber = multiDexPreferences.getInt(prefsKeyPrefix + KEY_DEX_NUMBER, 0);
+ if (totalDexNumber < 1) {
+ // Guard against SharedPreferences corruption
+ throw new IOException("Invalid dex number: " + totalDexNumber);
+ }
final List<ExtractedDex> files = new ArrayList<ExtractedDex>(totalDexNumber - 1);
for (int secondaryNumber = 2; secondaryNumber <= totalDexNumber; secondaryNumber++) {