diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghpatexpress/OperandValue.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghpatexpress/OperandValue.java index 6b47450fb5..63fce1db89 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghpatexpress/OperandValue.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghpatexpress/OperandValue.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +15,10 @@ */ package ghidra.pcodeCPort.slghpatexpress; +import java.io.PrintStream; + +import org.jdom.Element; + import generic.stl.VectorSTL; import ghidra.pcodeCPort.context.*; import ghidra.pcodeCPort.sleighbase.SleighBase; @@ -25,10 +28,6 @@ import ghidra.pcodeCPort.utils.MutableInt; import ghidra.pcodeCPort.utils.XmlUtils; import ghidra.sleigh.grammar.Location; -import java.io.PrintStream; - -import org.jdom.Element; - public class OperandValue extends PatternValue { private int index; // This is the defining field of expression @@ -50,6 +49,9 @@ public class OperandValue extends PatternValue { @Override public TokenPattern genMinPattern(VectorSTL ops) { + if (index >= ops.size()) { + return null; + } return ops.get(index); } diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/Constructor.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/Constructor.java index 3e3d7d0b09..69b52932a9 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/Constructor.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/Constructor.java @@ -571,7 +571,11 @@ public class Constructor { } } else if (defexp != null) { - oppattern.push_back(defexp.genMinPattern(oppattern)); + TokenPattern tmppat = defexp.genMinPattern(oppattern); + if (null == tmppat) { + throw new SleighError("operand " + sym.getName() + " has an issue", location); + } + oppattern.push_back(tmppat); } else { throw new SleighError("operand " + sym.getName() + " is undefined", location);