From 98b79f6ce1b11a1bcfcadbb6bebb0a12648779ed Mon Sep 17 00:00:00 2001 From: roxyHan <40450542+roxyHan@users.noreply.github.com> Date: Wed, 24 Jan 2024 16:47:37 -0500 Subject: [PATCH] Fixed ArrayIndexOutOfBoundsException in the java static analyzer --- .../gr/gousiosg/javacg/stat/DynamicCallManager.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/stat/DynamicCallManager.java b/src/main/java/gr/gousiosg/javacg/stat/DynamicCallManager.java index 2c4e8813..dd98c9b8 100644 --- a/src/main/java/gr/gousiosg/javacg/stat/DynamicCallManager.java +++ b/src/main/java/gr/gousiosg/javacg/stat/DynamicCallManager.java @@ -81,10 +81,12 @@ public void retrieveCalls(Method method, JavaClass jc) { while (matcher.find()) { int bootIndex = Integer.parseInt(matcher.group(1)); BootstrapMethod bootMethod = boots[bootIndex]; - int calledIndex = bootMethod.getBootstrapArguments()[CALL_HANDLE_INDEX_ARGUMENT]; - String calledName = getMethodNameFromHandleIndex(cp, calledIndex); - String callerName = method.getName(); - dynamicCallers.put(calledName, callerName); + if (bootMethod.getBootstrapArguments().length > 1) { + int calledIndex = bootMethod.getBootstrapArguments()[CALL_HANDLE_INDEX_ARGUMENT]; + String calledName = getMethodNameFromHandleIndex(cp, calledIndex); + String callerName = method.getName(); + dynamicCallers.put(calledName, callerName); + } } }