From e27cbd5d379fa23d9e8cfe5e088266f10022ded5 Mon Sep 17 00:00:00 2001 From: Robert Czechowski Date: Mon, 12 Jun 2023 15:22:38 +0200 Subject: [PATCH] hooks: Add equals-hook for Clojure (clojure.lang.Util.equiv) --- .../code_intelligence/jazzer/runtime/TraceCmpHooks.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/code_intelligence/jazzer/runtime/TraceCmpHooks.java b/src/main/java/com/code_intelligence/jazzer/runtime/TraceCmpHooks.java index 88cc3a156..7fb158662 100644 --- a/src/main/java/com/code_intelligence/jazzer/runtime/TraceCmpHooks.java +++ b/src/main/java/com/code_intelligence/jazzer/runtime/TraceCmpHooks.java @@ -99,6 +99,15 @@ final public class TraceCmpHooks { } } + @MethodHook(type = HookType.AFTER, targetClassName = "clojure.lang.Util", targetMethod = "equiv") + public static void genericStaticEquals( + MethodHandle method, Object thisObject, Object[] arguments, int hookId, Boolean areEqual) { + if (!areEqual && arguments.length == 2 && arguments[0] != null && arguments[1] != null + && arguments[1].getClass() == arguments[0].getClass()) { + TraceDataFlowNativeCallbacks.traceGenericCmp(arguments[0], arguments[1], hookId); + } + } + @MethodHook( type = HookType.AFTER, targetClassName = "java.lang.String", targetMethod = "compareTo") @MethodHook(type = HookType.AFTER, targetClassName = "java.lang.String",