diff options
Diffstat (limited to 'sanitizers/src/main/java/com/code_intelligence/jazzer/sanitizers/RegexRoadblocks.java')
-rw-r--r-- | sanitizers/src/main/java/com/code_intelligence/jazzer/sanitizers/RegexRoadblocks.java | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/sanitizers/src/main/java/com/code_intelligence/jazzer/sanitizers/RegexRoadblocks.java b/sanitizers/src/main/java/com/code_intelligence/jazzer/sanitizers/RegexRoadblocks.java index 1043ac02..76c499b0 100644 --- a/sanitizers/src/main/java/com/code_intelligence/jazzer/sanitizers/RegexRoadblocks.java +++ b/sanitizers/src/main/java/com/code_intelligence/jazzer/sanitizers/RegexRoadblocks.java @@ -22,7 +22,7 @@ import static com.code_intelligence.jazzer.sanitizers.utils.ReflectionUtils.offs import com.code_intelligence.jazzer.api.HookType; import com.code_intelligence.jazzer.api.Jazzer; import com.code_intelligence.jazzer.api.MethodHook; -import com.code_intelligence.jazzer.runtime.UnsafeProvider; +import com.code_intelligence.jazzer.utils.UnsafeProvider; import java.lang.invoke.MethodHandle; import java.util.WeakHashMap; import java.util.regex.Matcher; @@ -65,13 +65,6 @@ public final class RegexRoadblocks { private static final ThreadLocal<WeakHashMap<Object, Character>> PREDICATE_SOLUTIONS = ThreadLocal.withInitial(WeakHashMap::new); - // Do not act on instrumented regexes used by Jazzer internally, e.g. by ClassGraph. - private static boolean HOOK_DISABLED = true; - - static { - Jazzer.onFuzzTargetReady(() -> HOOK_DISABLED = UNSAFE == null); - } - @MethodHook(type = HookType.AFTER, targetClassName = "java.util.regex.Pattern$Node", targetMethod = "match", targetMethodDescriptor = "(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z", @@ -122,7 +115,7 @@ public final class RegexRoadblocks { }) public static void nodeMatchHook(MethodHandle method, Object node, Object[] args, int hookId, Boolean matched) { - if (HOOK_DISABLED || matched || node == null) + if (matched || node == null) return; Matcher matcher = (Matcher) args[0]; if (matcher == null) @@ -211,7 +204,7 @@ public final class RegexRoadblocks { additionalClassesToHook = {"java.util.regex.Pattern"}) public static void singleHook(MethodHandle method, Object node, Object[] args, int hookId, Object predicate) { - if (HOOK_DISABLED || predicate == null) + if (predicate == null) return; PREDICATE_SOLUTIONS.get().put(predicate, (char) (int) args[0]); } @@ -229,7 +222,7 @@ public final class RegexRoadblocks { public static void java8SingleHook( MethodHandle method, Object property, Object[] args, int hookId, Object alwaysNull) { - if (HOOK_DISABLED || property == null) + if (property == null) return; PREDICATE_SOLUTIONS.get().put(property, (char) (int) args[0]); } @@ -258,7 +251,7 @@ public final class RegexRoadblocks { additionalClassesToHook = {"java.util.regex.Pattern"}) public static void rangeHook(MethodHandle method, Object node, Object[] args, int hookId, Object predicate) { - if (HOOK_DISABLED || predicate == null) + if (predicate == null) return; PREDICATE_SOLUTIONS.get().put(predicate, (char) (int) args[0]); } @@ -280,7 +273,7 @@ public final class RegexRoadblocks { public static void unionHook( MethodHandle method, Object thisObject, Object[] args, int hookId, Object unionPredicate) { - if (HOOK_DISABLED || unionPredicate == null) + if (unionPredicate == null) return; Character solution = predicateSolution(thisObject); if (solution == null) @@ -298,7 +291,6 @@ public final class RegexRoadblocks { boolean[] bits = (boolean[]) UNSAFE.getObject(charPredicate, BIT_CLASS_BITS_OFFSET); for (int i = 0; i < bits.length; i++) { if (bits[i]) { - PREDICATE_SOLUTIONS.get().put(charPredicate, (char) i); return (char) i; } } |