diff options
author | Ben Gruver <bgruv@google.com> | 2014-01-29 19:39:34 -0800 |
---|---|---|
committer | Ben Gruver <bgruv@google.com> | 2014-01-29 19:39:34 -0800 |
commit | dd2079cd53c94056436d8c7c26df801fb210df4d (patch) | |
tree | aa38ad8d2bdd35b6fe4a230a2535680ac0ed58a7 | |
parent | 15e44d5b8b0cc77f81f41a2a9f553e2987d5033c (diff) | |
download | smali-dd2079cd53c94056436d8c7c26df801fb210df4d.tar.gz |
Fix NPE when using a custom inline method table
-rw-r--r-- | baksmali/src/main/java/org/jf/baksmali/baksmali.java | 6 | ||||
-rw-r--r-- | baksmali/src/main/java/org/jf/baksmali/baksmaliOptions.java | 2 | ||||
-rw-r--r-- | baksmali/src/main/java/org/jf/baksmali/main.java | 5 |
3 files changed, 10 insertions, 3 deletions
diff --git a/baksmali/src/main/java/org/jf/baksmali/baksmali.java b/baksmali/src/main/java/org/jf/baksmali/baksmali.java index fcc89d7a..056ff486 100644 --- a/baksmali/src/main/java/org/jf/baksmali/baksmali.java +++ b/baksmali/src/main/java/org/jf/baksmali/baksmali.java @@ -34,6 +34,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import org.jf.baksmali.Adaptors.ClassDefinition; import org.jf.dexlib2.analysis.ClassPath; +import org.jf.dexlib2.analysis.CustomInlineMethodResolver; import org.jf.dexlib2.iface.ClassDef; import org.jf.dexlib2.iface.DexFile; import org.jf.dexlib2.util.SyntheticAccessorResolver; @@ -67,6 +68,11 @@ public class baksmali { options.classPath = ClassPath.fromClassPath(options.bootClassPathDirs, Iterables.concat(options.bootClassPathEntries, extraClassPathEntries), dexFile, options.apiLevel); + + if (options.customInlineDefinitions != null) { + options.inlineResolver = new CustomInlineMethodResolver(options.classPath, + options.customInlineDefinitions); + } } catch (Exception ex) { System.err.println("\n\nError occurred while loading boot class path files. Aborting."); ex.printStackTrace(System.err); diff --git a/baksmali/src/main/java/org/jf/baksmali/baksmaliOptions.java b/baksmali/src/main/java/org/jf/baksmali/baksmaliOptions.java index 48a9146b..1e83c288 100644 --- a/baksmali/src/main/java/org/jf/baksmali/baksmaliOptions.java +++ b/baksmali/src/main/java/org/jf/baksmali/baksmaliOptions.java @@ -36,6 +36,7 @@ import org.jf.dexlib2.analysis.ClassPath; import org.jf.dexlib2.analysis.InlineMethodResolver; import org.jf.dexlib2.util.SyntheticAccessorResolver; +import java.io.File; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -71,6 +72,7 @@ public class baksmaliOptions { public boolean deodex = false; public boolean ignoreErrors = false; public boolean checkPackagePrivateAccess = false; + public File customInlineDefinitions = null; public InlineMethodResolver inlineResolver = null; public int registerInfo = 0; public ClassPath classPath = null; diff --git a/baksmali/src/main/java/org/jf/baksmali/main.java b/baksmali/src/main/java/org/jf/baksmali/main.java index db059f8c..274f1441 100644 --- a/baksmali/src/main/java/org/jf/baksmali/main.java +++ b/baksmali/src/main/java/org/jf/baksmali/main.java @@ -31,7 +31,6 @@ package org.jf.baksmali; import com.google.common.collect.Lists; import org.apache.commons.cli.*; import org.jf.dexlib2.DexFileFactory; -import org.jf.dexlib2.analysis.CustomInlineMethodResolver; import org.jf.dexlib2.analysis.InlineMethodResolver; import org.jf.dexlib2.dexbacked.DexBackedDexFile; import org.jf.dexlib2.dexbacked.DexBackedOdexFile; @@ -217,7 +216,7 @@ public class main { options.ignoreErrors = true; break; case 'T': - options.inlineResolver = new CustomInlineMethodResolver(options.classPath, new File(commandLine.getOptionValue("T"))); + options.customInlineDefinitions = new File(commandLine.getOptionValue("T")); break; default: assert false; @@ -270,7 +269,7 @@ public class main { } } - if (options.inlineResolver == null && dexFile instanceof DexBackedOdexFile) { + if (options.customInlineDefinitions == null && dexFile instanceof DexBackedOdexFile) { options.inlineResolver = InlineMethodResolver.createInlineMethodResolver(((DexBackedOdexFile)dexFile).getOdexVersion()); } |