diff options
author | Jon Noack <noackjr@google.com> | 2019-09-10 11:02:13 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-09-10 11:02:13 -0700 |
commit | 92d835c69ab9f8def1671adcb6611fecdd3242d2 (patch) | |
tree | 39a3f8a28908e4472402613f4ccb3205ef128087 | |
parent | 0c68d39470d5c7bacc6000df1a3e10dcdf0b4747 (diff) | |
parent | 69445972703ba195cc120e1c4daf4fab3f40f000 (diff) | |
download | multidex-92d835c69ab9f8def1671adcb6611fecdd3242d2.tar.gz |
Merge "Force re-extraction if dex number is invalid"
am: 6944597270
Change-Id: I9f77a567605f365b23f8acc82023ed3fc7a44107
-rw-r--r-- | library/src/androidx/multidex/MultiDexExtractor.java | 7 |
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++) { |