mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-23 13:16:48 +08:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
+46
-46
@@ -19,7 +19,8 @@ import static org.junit.Assert.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
|
||||
import org.junit.*;
|
||||
|
||||
@@ -61,6 +62,7 @@ import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.program.util.VariableNameFieldLocation;
|
||||
import ghidra.test.*;
|
||||
import ghidra.util.Msg;
|
||||
import ghidra.util.Swing;
|
||||
import ghidra.util.table.GhidraProgramTableModel;
|
||||
import ghidra.util.table.field.LabelTableColumn;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
@@ -107,7 +109,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
assertEquals(1, actions.size());
|
||||
assertEquals("Go To Address/Label", CollectionUtils.any(actions).getName());
|
||||
ActionContext actionContext = getActionContext();
|
||||
assertTrue(!CollectionUtils.any(actions).isEnabledForContext(actionContext));
|
||||
assertFalse(CollectionUtils.any(actions).isEnabledForContext(actionContext));
|
||||
|
||||
loadProgram("x86");
|
||||
|
||||
@@ -116,7 +118,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
final ProgramManager pm = tool.getService(ProgramManager.class);
|
||||
runSwing(() -> pm.closeProgram(program, true));
|
||||
actionContext = getActionContext();
|
||||
assertTrue(!CollectionUtils.any(actions).isEnabledForContext(actionContext));
|
||||
assertFalse(CollectionUtils.any(actions).isEnabledForContext(actionContext));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -135,7 +137,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
showDialog();
|
||||
performOkCallback();
|
||||
assertEquals(addr("0x1006420"), cbPlugin.getCurrentAddress());
|
||||
assertTrue(!dialog.isVisible());
|
||||
assertFalse(dialog.isVisible());
|
||||
|
||||
setText("bad input");
|
||||
showDialog();
|
||||
@@ -199,7 +201,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
TableServicePlugin tablePlugin = getPlugin(tool, TableServicePlugin.class);
|
||||
TableComponentProvider<?>[] providers = tablePlugin.getManagedComponents();
|
||||
assertEquals(1, providers.length);
|
||||
providers[0].closeComponent();
|
||||
close(providers[0]);
|
||||
providers = tablePlugin.getManagedComponents();
|
||||
assertEquals(0, providers.length);
|
||||
}
|
||||
@@ -442,9 +444,9 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
TableServicePlugin tablePlugin = getPlugin(tool, TableServicePlugin.class);
|
||||
TableComponentProvider<?>[] providers = tablePlugin.getManagedComponents();
|
||||
assertEquals(1, providers.length);
|
||||
providers[0].closeComponent();
|
||||
providers = tablePlugin.getManagedComponents();
|
||||
assertEquals(0, providers.length);
|
||||
close(providers[0]);
|
||||
TableComponentProvider<?>[] newProviders = tablePlugin.getManagedComponents();
|
||||
assertEquals(0, newProviders.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -466,7 +468,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
|
||||
TableComponentProvider<?>[] providers = getProviders();
|
||||
assertEquals(1, providers.length);
|
||||
providers[0].closeComponent();
|
||||
close(providers[0]);
|
||||
providers = getProviders();
|
||||
assertEquals(0, providers.length);
|
||||
|
||||
@@ -538,9 +540,10 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
public void testQueryResultsDialogCaseSensitive2() throws Exception {
|
||||
loadProgram("x86");
|
||||
Symbol symbol = getUniqueSymbol(program, "comdlg32.dll_PageSetupDlgW");
|
||||
int transactionID = program.startTransaction("test");
|
||||
symbol.setName("COmlg32.dll_PageSetupDlgW", SourceType.USER_DEFINED);
|
||||
program.endTransaction(transactionID, true);
|
||||
|
||||
tx(program, () -> {
|
||||
symbol.setName("COmlg32.dll_PageSetupDlgW", SourceType.USER_DEFINED);
|
||||
});
|
||||
|
||||
setText("COm*");
|
||||
performOkCallback();
|
||||
@@ -553,11 +556,11 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
public void testQueryResultsDialogNotCaseSensitive() throws Exception {
|
||||
loadProgram("x86");
|
||||
Symbol symbol = getUniqueSymbol(program, "comdlg32.dll_PageSetupDlgW");
|
||||
int transactionID = program.startTransaction("test");
|
||||
symbol.setName("COmlg32.dll_PageSetupDlgW", SourceType.USER_DEFINED);
|
||||
program.endTransaction(transactionID, true);
|
||||
final JCheckBox cb = findComponent(dialog, JCheckBox.class);
|
||||
tx(program, () -> {
|
||||
symbol.setName("COmlg32.dll_PageSetupDlgW", SourceType.USER_DEFINED);
|
||||
});
|
||||
|
||||
JCheckBox cb = findComponent(dialog, JCheckBox.class);
|
||||
runSwing(() -> {
|
||||
cb.setSelected(false);
|
||||
dialog.setText("COm*");
|
||||
@@ -569,7 +572,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
assertEquals(3, model.getRowCount());
|
||||
|
||||
TableComponentProvider<?>[] providers = getProviders();
|
||||
providers[0].closeComponent();
|
||||
close(providers[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -579,12 +582,12 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
setText("rsrc_S*");
|
||||
performOkCallback();
|
||||
|
||||
final GhidraProgramTableModel<?> model = waitForModel();
|
||||
GhidraProgramTableModel<?> model = waitForModel();
|
||||
assertEquals(4, model.getRowCount());
|
||||
TableComponentProvider<?>[] providers = getProviders();
|
||||
GThreadedTablePanel<?> panel =
|
||||
(GThreadedTablePanel<?>) TestUtils.getInstanceField("threadedPanel", providers[0]);
|
||||
final GTable table = panel.getTable();
|
||||
GTable table = panel.getTable();
|
||||
|
||||
assertEquals("0100def8", model.getValueAt(0, 0).toString());
|
||||
assertEquals("0100e2f8", model.getValueAt(1, 0).toString());
|
||||
@@ -594,7 +597,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
clickTableCell(table, 2, 0, 2);
|
||||
assertEquals(addr("0100eb90"), cbPlugin.getCurrentAddress());
|
||||
|
||||
providers[0].closeComponent();
|
||||
close(providers[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -604,38 +607,38 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
DockingActionIf next = getAction(np, "Next Location in History");
|
||||
DockingActionIf prev = getAction(np, "Previous Location in History");
|
||||
DockingActionIf clear = getAction(np, "Clear History Buffer");
|
||||
assertTrue(!clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
loadProgram("x86");
|
||||
|
||||
assertTrue(!clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
setText("100493b");
|
||||
performOkCallback();
|
||||
assertEquals(addr("100493b"), cbPlugin.getCurrentAddress());
|
||||
|
||||
clear.actionPerformed(new ActionContext());
|
||||
assertTrue(!clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
setText("1001000");
|
||||
performOkCallback();
|
||||
assertEquals(addr("1001000"), cbPlugin.getCurrentAddress());
|
||||
waitForPostedSwingRunnables();
|
||||
assertTrue(clear.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
prev.actionPerformed(new ActionContext());
|
||||
assertEquals(addr("100493b"), cbPlugin.getCurrentAddress());
|
||||
|
||||
assertTrue(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
next.actionPerformed(new ActionContext());
|
||||
assertEquals(addr("1001000"), cbPlugin.getCurrentAddress());
|
||||
@@ -644,7 +647,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
performOkCallback();
|
||||
assertEquals(addr("1001010"), cbPlugin.getCurrentAddress());
|
||||
waitForPostedSwingRunnables();
|
||||
assertTrue(!next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
prev.actionPerformed(new ActionContext());
|
||||
@@ -652,13 +655,13 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
|
||||
assertEquals(addr("100493b"), cbPlugin.getCurrentAddress());
|
||||
assertTrue(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(!prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
setText("1001020");
|
||||
performOkCallback();
|
||||
assertEquals(addr("1001020"), cbPlugin.getCurrentAddress());
|
||||
waitForPostedSwingRunnables();
|
||||
assertTrue(!next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertFalse(next.isEnabledForContext(provider.getActionContext(null)));
|
||||
assertTrue(prev.isEnabledForContext(provider.getActionContext(null)));
|
||||
|
||||
}
|
||||
@@ -677,7 +680,6 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
|
||||
VariableNameFieldLocation vloc = (VariableNameFieldLocation) loc;
|
||||
assertEquals(locals[locals.length - 1].getName(), vloc.getName());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -686,7 +688,6 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
setText("rand");
|
||||
performOkCallback();
|
||||
assertEquals(addr("0x1002000"), cbPlugin.getCurrentAddress());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -880,18 +881,13 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
//
|
||||
|
||||
ProgramDB p = builder.getProgram();
|
||||
int txID = p.startTransaction("All Local Variable");
|
||||
try {
|
||||
tx(p, () -> {
|
||||
FunctionManager fm = p.getFunctionManager();
|
||||
Function f = fm.getFunctionAt(builder.addr("0x01006420"));
|
||||
ByteDataType dt = new ByteDataType();
|
||||
Variable var = new LocalVariableImpl("bob.local", 0, dt, builder.addr("0x01006421"), p);
|
||||
f.addLocalVariable(var, SourceType.USER_DEFINED);
|
||||
|
||||
}
|
||||
finally {
|
||||
p.endTransaction(txID, true);
|
||||
}
|
||||
});
|
||||
|
||||
return p;
|
||||
}
|
||||
@@ -949,7 +945,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
}
|
||||
|
||||
private ActionContext getActionContext() {
|
||||
ActionContext context = cbPlugin.getProvider().getActionContext(null);
|
||||
ActionContext context = runSwing(() -> cbPlugin.getProvider().getActionContext(null));
|
||||
if (context == null) {
|
||||
context = new ActionContext();
|
||||
}
|
||||
@@ -958,7 +954,6 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
|
||||
private MemoryBlock createOverlay(String name, String address, long size) throws Exception {
|
||||
int transactionID = program.startTransaction("Test");
|
||||
|
||||
try {
|
||||
Memory memory = program.getMemory();
|
||||
return memory.createInitializedBlock(name, addr(address), size, (byte) 0,
|
||||
@@ -1015,7 +1010,7 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
}
|
||||
|
||||
private void showDialog() {
|
||||
SwingUtilities.invokeLater(() -> dialog.show(provider, cbPlugin.getCurrentAddress(), tool));
|
||||
Swing.runLater(() -> dialog.show(provider, cbPlugin.getCurrentAddress(), tool));
|
||||
waitForPostedSwingRunnables();
|
||||
}
|
||||
|
||||
@@ -1041,4 +1036,9 @@ public class GoToAddressLabelPluginTest extends AbstractGhidraHeadedIntegrationT
|
||||
options.setBoolean(NavigationOptions.ASSUME_CURRENT_ADDRESS_SPACE, b);
|
||||
});
|
||||
}
|
||||
|
||||
private void close(TableComponentProvider<?> c) {
|
||||
runSwing(c::closeComponent);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user