Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NullPointerException when editing "Location" field in Storage Address Editor window #7900

Open
Fireshtorm1k opened this issue Mar 12, 2025 · 0 comments
Assignees
Labels
Feature: Functions Function signature, creation, management Status: Internal This is being tracked internally by the Ghidra team Type: Bug Something isn't working
Milestone

Comments

@Fireshtorm1k
Copy link

Fireshtorm1k commented Mar 12, 2025

Describe the bug
NullPointerException when editing "Location" field in Storage Address Editor window

To Reproduce
Steps to reproduce the behavior:

  1. Go to edit function signature window
  2. Click on 'Use Custom Storage'
  3. Click "+"
  4. Double click on field Storage in new variable
  5. Add Storage location in this window by click on "+"
  6. Edit type to Stack
  7. Try to change field "Location"
  8. See error Cannot invoke "java.lang.Integer.intValue()" because the return value of "ghidra.app.plugin.core.function.editor.VarnodeInfo.getSize()" is null

Attachments

Image
Log:

Cannot invoke "java.lang.Integer.intValue()" because the return value of "ghidra.app.plugin.core.function.editor.VarnodeInfo.getSize()" is null
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "ghidra.app.plugin.core.function.editor.VarnodeInfo.getSize()" is null
	at ghidra.app.plugin.core.function.editor.StorageAddressModel.isValidAddress(StorageAddressModel.java:225)
	at ghidra.app.plugin.core.function.editor.StorageAddressModel.hasValidVarnodes(StorageAddressModel.java:191)
	at ghidra.app.plugin.core.function.editor.StorageAddressModel.validate(StorageAddressModel.java:164)
	at ghidra.app.plugin.core.function.editor.StorageAddressModel.notifyDataChanged(StorageAddressModel.java:157)
	at ghidra.app.plugin.core.function.editor.StorageAddressModel.setVarnode(StorageAddressModel.java:323)
	at ghidra.app.plugin.core.function.editor.VarnodeTableModel$LocationColumn.setValue(VarnodeTableModel.java:158)
	at ghidra.app.plugin.core.function.editor.VarnodeTableModel.setValueAt(VarnodeTableModel.java:64)
	at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2793)
	at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4791)
	at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
	at ghidra.app.plugin.core.function.editor.VarnodeLocationCellEditor.stopCellEditing(VarnodeLocationCellEditor.java:97)
	at ghidra.app.plugin.core.function.editor.VarnodeLocationCellEditor.lambda$createStackOffsetEditor$2(VarnodeLocationCellEditor.java:169)
	at java.desktop/javax.swing.JTextField.fireActionPerformed(JTextField.java:525)
	at java.desktop/javax.swing.JTextField.postActionEvent(JTextField.java:740)
	at java.desktop/javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:856)
	at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
	at java.desktop/javax.swing.JComponent.processKeyBinding(JComponent.java:2956)
	at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:3004)
	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2918)
	at java.desktop/java.awt.Component.processEvent(Component.java:6398)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1952)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:883)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1146)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:848)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4877)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	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:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	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:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	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.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1079)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1015)
	at docking.DockingDialog.setVisible(DockingDialog.java:363)
	at docking.DockingWindowManager.lambda$doShowDialog$7(DockingWindowManager.java:1859)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1863)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1811)
	at ghidra.app.plugin.core.function.editor.StorageTableCellEditor.lambda$getTableCellEditorComponent$0(StorageTableCellEditor.java:66)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	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:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	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.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1079)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1015)
	at docking.DockingDialog.setVisible(DockingDialog.java:363)
	at docking.DockingWindowManager.lambda$doShowDialog$7(DockingWindowManager.java:1859)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1863)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1795)
	at ghidra.framework.plugintool.PluginTool.showDialog(PluginTool.java:1516)
	at ghidra.app.plugin.core.decompile.actions.SpecifyCPrototypeAction.decompilerActionPerformed(SpecifyCPrototypeAction.java:188)
	at ghidra.app.plugin.core.decompile.actions.AbstractDecompilerAction.lambda$actionPerformed$1(AbstractDecompilerAction.java:74)
	at ghidra.app.plugin.core.decompile.DecompilerActionContext.performAction(DecompilerActionContext.java:191)
	at ghidra.app.plugin.core.decompile.actions.AbstractDecompilerAction.actionPerformed(AbstractDecompilerAction.java:73)
	at docking.PopupMenuHandler$1.run(PopupMenuHandler.java:63)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	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:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	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)

---------------------------------------------------
Build Date: 2025-Feb-19 1001 EST
Ghidra Version: 11.3.1
Java Home: C:\Program Files\Java\jdk-21
JVM Version: Oracle Corporation 21.0.5
OS: Windows 11 10.0 amd64
Workstation: WIN-L82DG31E6DH

Environment (please complete the following information):

  • OS: Windows 11 24H2
  • Java Version: java 21.0.5 2024-10-15 LTS
    Java(TM) SE Runtime Environment (build 21.0.5+9-LTS-239)
    Java HotSpot(TM) 64-Bit Server VM (build 21.0.5+9-LTS-239, mixed mode, sharing)
  • Ghidra Version: 11.3.1
  • Ghidra Origin: Github Release

Additional context
This problem may not occur sometimes.

@dev747368 dev747368 self-assigned this Mar 12, 2025
@dev747368 dev747368 added Type: Bug Something isn't working Status: Internal This is being tracked internally by the Ghidra team Status: Triage Information is being gathered and removed Status: Internal This is being tracked internally by the Ghidra team labels Mar 12, 2025
@dev747368 dev747368 assigned ghidra1 and unassigned dev747368 Mar 12, 2025
@ghidra1 ghidra1 added Status: Internal This is being tracked internally by the Ghidra team Feature: Functions Function signature, creation, management and removed Status: Triage Information is being gathered labels Mar 12, 2025
@ghidra1 ghidra1 added this to the 11.3.2 milestone Mar 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature: Functions Function signature, creation, management Status: Internal This is being tracked internally by the Ghidra team Type: Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants