JesusFreke/smali

Wrong hidden api flags when assembling smali

Closed this issue · 1 comments

Hey,
I've been trying to patch the framework.jar with this tool and I noticed that the assembler doesn't set the right flags when assembling.

diff a/android/hardware/radio/V1_3/IRadioResponse.smali b/android/hardware/radio/V1_3/IRadioResponse.smali 
342c342
< .method public abstract blacklist setHALInstrumentation()V
---
> .method public abstract whitelist core-platform-api test-api setHALInstrumentation()V

This also causes errors when disassembling assembled classes.dex and when using the patched framework.jar

Error occurred while disassembling class Landroid.hardware.radio.V1_3.IRadioResponse$Proxy; - skipping class
java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
	at org.jf.dexlib2.HiddenApiRestriction.getAllFlags(HiddenApiRestriction.java:108)
	at org.jf.dexlib2.dexbacked.DexBackedMethod.getHiddenApiRestrictions(DexBackedMethod.java:204)
	at org.jf.baksmali.Adaptors.MethodDefinition.writeTo(MethodDefinition.java:189)
	at org.jf.baksmali.Adaptors.ClassDefinition.writeVirtualMethods(ClassDefinition.java:325)
	at org.jf.baksmali.Adaptors.ClassDefinition.writeTo(ClassDefinition.java:115)
	at org.jf.baksmali.Baksmali.disassembleClass(Baksmali.java:161)
	at org.jf.baksmali.Baksmali.access$000(Baksmali.java:46)
	at org.jf.baksmali.Baksmali$1.call(Baksmali.java:76)
	at org.jf.baksmali.Baksmali$1.call(Baksmali.java:74)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:831)

fixed by #816