Closed GoogleCodeExporter closed 9 years ago
What steps will reproduce the problem? 1. Write a dex method like the following ( I got this method from the facebook app, original classes.dex is too big to upload) .method private static a(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; .registers 4 .parameter .parameter .prologue .line 213 if-eqz p1, :cond_7 :goto_2 :try_start_2 invoke-static {p0, p1}, Ljava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; move-result-object v0 return-object v0 :cond_7 const-string p1, "ISO-8859-1" :try_end_9 .catch Ljava/io/UnsupportedEncodingException; {:try_start_2 .. :try_end_9} :catch_a goto :goto_2 .line 215 :catch_a move-exception v0 .line 216 new-instance v1, Ljava/lang/IllegalArgumentException; invoke-direct {v1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/Throwable;)V throw v1 .end method 2. Translate to jar using dex2jar. 3. Run the verifier, it crashes with the following message: Error verify method com/facebook/apache/http/client/utils/URLEncodedUtils.a (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 16: Trying to access an inexistant local variable at org.objectweb.asm.tree.analysis.Analyzer.analyze(Unknown Source) at com.googlecode.dex2jar.tools.AsmVerify$1.handle(AsmVerify.java:141) at p.rn.util.FileWalker.walk(FileWalker.java:79) at com.googlecode.dex2jar.tools.AsmVerify.doCommandLine(AsmVerify.java:119) at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:118) at com.googlecode.dex2jar.tools.AsmVerify.main(AsmVerify.java:50) Caused by: java.lang.IndexOutOfBoundsException: Trying to access an inexistant local variable at org.objectweb.asm.tree.analysis.Frame.getLocal(Unknown Source) at org.objectweb.asm.tree.analysis.Frame.execute(Unknown Source) ... 6 more 00000 RR : | ALOAD 1 00001 RR : R | IFNULL L0 00002 RR : | L1 00003 ? | ALOAD 0 00004 ? | ALOAD 1 00005 ? | INVOKESTATIC java/net/URLEncoder.encode (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 00006 ? | ARETURN 00007 RR : | L0 00008 RR : | LDC "ISO-8859-1" 00009 ? | ASTORE 1 00010 ? | L2 00011 ? | GOTO L1 00012 RR : R | L3 00013 RR : R | POP 00014 RR : | NEW java/lang/IllegalArgumentException 00015 RR : R | DUP 00016 RR : RR | DLOAD 3 00017 ? | INVOKESPECIAL java/lang/IllegalArgumentException.<init> (Ljava/lang/Throwable;)V 00018 ? | ATHROW TRYCATCHBLOCK L1 L2 L3 java/io/UnsupportedEncodingException What is the expected output? What do you see instead? What I get: private static java.lang.String a(java.lang.String, java.lang.String); Code: Stack=3, Locals=2, Args_size=2 0: aload_1 1: ifnull 10 4: aload_0 5: aload_1 6: invokestatic #18; //Method java/net/URLEncoder.encode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 9: areturn 10: ldc #20; //String ISO-8859-1 12: astore_1 13: goto 4 16: pop 17: new #22; //class java/lang/IllegalArgumentException 20: dup 21: dload_3 22: invokespecial #25; //Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/Throwable;)V 25: athrow Exception table: from to target type 4 13 16 Class java/io/UnsupportedEncodingException I would expect something like the following (notice locals=3 and lines 16,21): private static java.lang.String a(java.lang.String, java.lang.String); Code: Stack=3, Locals=3, Args_size=2 0: aload_1 1: ifnull 10 4: aload_0 5: aload_1 6: invokestatic #18; //Method java/net/URLEncoder.encode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 9: areturn 10: ldc #20; //String ISO-8859-1 12: astore_1 13: goto 4 16: astore_2 17: new #22; //class java/lang/IllegalArgumentException 20: dup 21: aload_2 22: invokespecial #25; //Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/Throwable;)V 25: athrow Exception table: from to target type 4 13 16 Class java/io/UnsupportedEncodingException What version of the product are you using? On what operating system? 0.0.9.8 on MAC OSX 10.6.8
Original issue reported on code.google.com by O.Tsapo...@gmail.com on 12 Jun 2012 at 10:41
O.Tsapo...@gmail.com
Original issue reported on code.google.com by
O.Tsapo...@gmail.com
on 12 Jun 2012 at 10:41