Skip to content

[gui] NullPointerExpection when selecting manifest.json of xapk file #2501

@jpstotz

Description

@jpstotz

Issue details

When opening an xapk file and trying to view it's manifest.json everything that is shown is a NullPointerException stack trace:

Error decode json
java.lang.NullPointerException: Cannot invoke "java.nio.ByteBuffer.position(int)" because "buf" is null
	at jadx.zip.parser.JadxZipParser.bufferToBytes(JadxZipParser.java:359)
	at jadx.zip.parser.JadxZipParser.getBytes(JadxZipParser.java:321)
	at jadx.zip.parser.JadxZipParser.getInputStream(JadxZipParser.java:291)
	at jadx.zip.parser.JadxZipEntry.getInputStream(JadxZipEntry.java:69)

I assume the XAPK file buffer had already been closed at that time and thus JadxZipParser.byteBuffer is already been set to null.

Sample app: https://d.apkpure.com/b/XAPK/com.skool.skoolcommunities?versionCode=94

Open Resources -> manifest.json

Full stack trace:

jadx.core.utils.exceptions.JadxException: Error decode: manifest.json
	at jadx.api.ResourcesLoader.decodeStream(ResourcesLoader.java:108)
	at jadx.api.ResourcesLoader.loadContent(ResourcesLoader.java:115)
	at jadx.api.ResourceFile.loadContent(ResourceFile.java:56)
	at jadx.gui.treemodel.JResource.loadContent(JResource.java:194)
	at jadx.gui.treemodel.JResource.getCodeInfo(JResource.java:181)
	at jadx.gui.ui.codearea.CodeArea.getCodeInfo(CodeArea.java:117)
	at jadx.gui.ui.codearea.CodeArea.load(CodeArea.java:125)
	at jadx.gui.ui.codearea.CodePanel.load(CodePanel.java:121)
	at jadx.gui.ui.codearea.CodeContentPanel.<init>(CodeContentPanel.java:26)
	at jadx.gui.treemodel.JResource.getContentPanel(JResource.java:168)
	at jadx.gui.ui.tab.TabbedPane.onTabOpen(TabbedPane.java:417)
	at jadx.gui.ui.tab.TabsController.lambda$openTab$0(TabsController.java:73)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at jadx.gui.ui.tab.TabsController.openTab(TabsController.java:73)
	at jadx.gui.ui.tab.TabsController.openTab(TabsController.java:59)
	at jadx.gui.ui.tab.TabsController.selectTab(TabsController.java:106)
	at jadx.gui.ui.MainWindow.nodeClickAction(MainWindow.java:906)
	at jadx.gui.ui.MainWindow$5.mousePressed(MainWindow.java:1398)
	at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:288)
	at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6623)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4572)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NullPointerException: Cannot invoke "java.nio.ByteBuffer.position(int)" because "buf" is null
	at jadx.zip.parser.JadxZipParser.readFlags(JadxZipParser.java:352)
	at jadx.zip.parser.JadxZipParser.isEncrypted(JadxZipParser.java:346)
	at jadx.zip.parser.JadxZipParser.getBytes(JadxZipParser.java:310)
	at jadx.zip.parser.JadxZipParser.getInputStream(JadxZipParser.java:291)
	at jadx.zip.parser.JadxZipEntry.getInputStream(JadxZipEntry.java:69)
	at jadx.api.ResourcesLoader.decodeStream(ResourcesLoader.java:98)
	... 49 common frames omitted

Jadx version

latest unstable version from git

Java version

17.0.11

OS

  • Windows
  • Linux
  • macOS

Metadata

Metadata

Assignees

Labels

GUIIssues in jadx-gui modulebug

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions