From fc068f14310f9da049a155c96d2e07c337fbf5ee Mon Sep 17 00:00:00 2001 From: emteere <47253321+emteere@users.noreply.github.com> Date: Mon, 23 Sep 2019 09:12:31 -0400 Subject: [PATCH] emteere_ThunkIssuePartialVnode fix for exception in thunk check involving instructions accessing a register where no full defined register exists --- .../java/ghidra/app/cmd/function/CreateThunkFunctionCmd.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/cmd/function/CreateThunkFunctionCmd.java b/Ghidra/Features/Base/src/main/java/ghidra/app/cmd/function/CreateThunkFunctionCmd.java index 60b817f929..a5604ec4a1 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/cmd/function/CreateThunkFunctionCmd.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/cmd/function/CreateThunkFunctionCmd.java @@ -685,7 +685,9 @@ public class CreateThunkFunctionCmd extends BackgroundCommand { for (Iterator iterator = setRegisters.iterator(); iterator.hasNext();) { Varnode rvnode = iterator.next(); Register reg = program.getRegister(rvnode); - if (reg.isHidden()) { + // the register pcode access could have fallen in the middle of a valid register + // thus no register will exist at the varnode + if (reg != null && reg.isHidden()) { iterator.remove(); } }