From 670e75be5d7e524e731eb6a1f12ca5bf2dc63a88 Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:23:24 -0400 Subject: [PATCH] GP-4538 - Search - Fixed the memory search results table to select the number of bytes for each row --- .../core/searchmem/MemSearchPlugin.java | 5 +---- .../core/searchmem/MemSearchTableModel.java | 19 ++++++------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java index 5c02dfe394..d7d7d967cc 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java @@ -457,10 +457,7 @@ public class MemSearchPlugin extends Plugin implements OptionsChangeListener, searchDialog.setStatusText("Searching..."); - SearchData searchData = info.getSearchData(); - byte[] searchBytes = searchData.getBytes(); - int selectionSize = searchBytes.length == 0 ? 1 : searchBytes.length; - MemSearchTableModel model = new MemSearchTableModel(tool, selectionSize, program, info, + MemSearchTableModel model = new MemSearchTableModel(tool, program, info, getSearchStartAddress(info), navigatable.getSelection()); currentResultsTableProvider = diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchTableModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchTableModel.java index a941131230..c900e65753 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchTableModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchTableModel.java @@ -34,16 +34,12 @@ public class MemSearchTableModel extends AddressBasedTableModel private Address startAddress; private MemorySearchAlgorithm algorithm; - private int selectionSize = 1; - - MemSearchTableModel(ServiceProvider serviceProvider, int selectionSize, Program program, - SearchInfo searchInfo, Address searchStartAddress, ProgramSelection programSelection) { + MemSearchTableModel(ServiceProvider serviceProvider, Program program, SearchInfo searchInfo, + Address searchStartAddress, ProgramSelection programSelection) { super("Memory Search", serviceProvider, program, null, true); this.searchInfo = searchInfo; this.startAddress = searchStartAddress; this.selection = programSelection; - - this.selectionSize = selectionSize; } public boolean isSortedOnAddress() { @@ -91,14 +87,11 @@ public class MemSearchTableModel extends AddressBasedTableModel @Override public ProgramSelection getProgramSelection(int[] rows) { - if (selectionSize == 1) { - return super.getProgramSelection(rows); - } - - int addOn = selectionSize - 1; AddressSet addressSet = new AddressSet(); - for (int element : rows) { - Address minAddr = getAddress(element); + for (int row : rows) { + MemSearchResult result = getRowObject(row); + int addOn = result.getLength() - 1; + Address minAddr = getAddress(row); Address maxAddr = minAddr; try { maxAddr = minAddr.addNoWrap(addOn);