From 15bcfc25948a34face39e099955aa5e764ed3a9d Mon Sep 17 00:00:00 2001 From: d-millar <33498836+d-millar@users.noreply.github.com> Date: Fri, 1 Dec 2023 22:51:33 +0000 Subject: [PATCH] GP-0: fix for ISF test failures --- .../ghidra/program/model/data/ISF/AbstractIsfWriter.java | 2 +- .../ghidra/program/model/data/ISF/IsfDataTypeWriter.java | 9 +++++++-- .../java/sarif/export/data/ExtIsfDataTypeWriter.java | 7 +++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/AbstractIsfWriter.java b/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/AbstractIsfWriter.java index 9afd82d11e..00286cd8a9 100644 --- a/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/AbstractIsfWriter.java +++ b/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/AbstractIsfWriter.java @@ -44,7 +44,7 @@ public abstract class AbstractIsfWriter implements Closeable { protected JsonArray objects = new JsonArray(); public AbstractIsfWriter(Writer baseWriter) throws IOException { - if (writer != null) { + if (baseWriter != null) { this.writer = new JsonWriter(baseWriter); writer.setIndent(" "); } diff --git a/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/IsfDataTypeWriter.java b/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/IsfDataTypeWriter.java index e12ebf42a1..195b64b519 100644 --- a/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/IsfDataTypeWriter.java +++ b/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/program/model/data/ISF/IsfDataTypeWriter.java @@ -84,7 +84,6 @@ public class IsfDataTypeWriter extends AbstractIsfWriter { private List
requestedAddresses = new ArrayList<>(); private List requestedSymbols = new ArrayList<>(); - // private List requestedTypes = new ArrayList<>(); private List requestedDataTypes = new ArrayList<>(); private boolean skipSymbols = false; private boolean skipTypes = false; @@ -99,6 +98,7 @@ public class IsfDataTypeWriter extends AbstractIsfWriter { */ public IsfDataTypeWriter(DataTypeManager dtm, List target, Writer baseWriter) throws IOException { super(baseWriter); + this.baseWriter = baseWriter; this.dtm = dtm; if (dtm != null) { dataOrganization = dtm.getDataOrganization(); @@ -113,10 +113,15 @@ public class IsfDataTypeWriter extends AbstractIsfWriter { enums = new JsonObject(); functions = new JsonObject(); symbols = new JsonObject(); - requestedDataTypes = target; + requestedDataTypes = target == null ? new ArrayList<>() : target; STRICT = true; } + public JsonObject getRootObject(TaskMonitor monitor) throws CancelledException, IOException { + genRoot(monitor); + return data; + } + @Override protected void genRoot(TaskMonitor monitor) throws CancelledException, IOException { genMetadata(); diff --git a/Ghidra/Features/Sarif/src/main/java/sarif/export/data/ExtIsfDataTypeWriter.java b/Ghidra/Features/Sarif/src/main/java/sarif/export/data/ExtIsfDataTypeWriter.java index 4f94119d6d..800ae08147 100644 --- a/Ghidra/Features/Sarif/src/main/java/sarif/export/data/ExtIsfDataTypeWriter.java +++ b/Ghidra/Features/Sarif/src/main/java/sarif/export/data/ExtIsfDataTypeWriter.java @@ -19,6 +19,8 @@ import java.io.IOException; import java.io.Writer; import java.util.List; +import com.google.gson.JsonObject; + import ghidra.program.model.data.Array; import ghidra.program.model.data.BitFieldDataType; import ghidra.program.model.data.BuiltInDataType; @@ -50,6 +52,11 @@ public class ExtIsfDataTypeWriter extends IsfDataTypeWriter { STRICT = false; } + public JsonObject getRootObject(TaskMonitor monitor) throws CancelledException, IOException { + genRoot(monitor); + return root; + } + @Override protected void genRoot(TaskMonitor monitor) throws CancelledException, IOException { super.genRoot(monitor);