From 14870dc532912d75700803faaacd3746e33c6f83 Mon Sep 17 00:00:00 2001 From: caheckman <48068198+caheckman@users.noreply.github.com> Date: Mon, 30 Sep 2024 22:20:33 +0000 Subject: [PATCH] GP-4977 Properly decode in Array --- .../main/java/ghidra/javaclass/format/DescriptorDecoder.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java b/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java index 0714d8008a..c50e57ab6a 100644 --- a/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java +++ b/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java @@ -321,7 +321,7 @@ public class DescriptorDecoder { */ public static DataType getPointerType(String descriptor, DataTypeManager dtManager) { int lastBracket = descriptor.lastIndexOf("["); - String baseTypeOfArray = descriptor.substring(lastBracket + 1, lastBracket + 2); + String baseTypeOfArray = descriptor.substring(lastBracket + 1); DataType baseType = null; switch (baseTypeOfArray.charAt(0)) { case BASE_TYPE_BYTE: @@ -349,7 +349,8 @@ public class DescriptorDecoder { baseType = ArrayMethods.getArrayBaseType(JavaClassConstants.T_SHORT, dtManager); break; case BASE_TYPE_REFERENCE: - return dtManager.getPointer(DWordDataType.dataType); + baseType = getDataTypeOfDescriptor(baseTypeOfArray, dtManager); + break; default: throw new IllegalArgumentException(