diff --git a/build.gradle b/build.gradle index 41e19bea..e0f17ad5 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ repositories { } group 'io.sqreen' -version '17.1.0' +version '17.2.0' sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/src/main/c/waf_jni.c b/src/main/c/waf_jni.c index 85e06134..8d0b2236 100644 --- a/src/main/c/waf_jni.c +++ b/src/main/c/waf_jni.c @@ -1220,7 +1220,7 @@ static bool _cache_methods(JNIEnv *env) "Ljava/lang/String;" "Ljava/util/Map;" "Ljava/util/Map;" - "ZJ" + "Ljava/lang/Boolean;J" "Z)V", JMETHOD_CONSTRUCTOR)) { goto error; @@ -2213,9 +2213,14 @@ static jobject _create_result_checked(JNIEnv *env, DDWAF_RET_CODE code, // Get keep and duration from the ddwaf_object structure const ddwaf_object *keep_obj = ddwaf_object_find(ddwaf_result, "keep", 4); - jboolean keep = JNI_TRUE; // Default to true when NULL/missing + jobject keep = NULL; // Default to NULL if (keep_obj != NULL && keep_obj->type == DDWAF_OBJ_BOOL) { - keep = (jboolean) ddwaf_object_get_bool(keep_obj); + jboolean keep_value = (jboolean) ddwaf_object_get_bool(keep_obj); + jclass boolean_class = JNI(FindClass, "java/lang/Boolean"); + jmethodID boolean_valueOf = JNI(GetStaticMethodID, boolean_class, + "valueOf", "(Z)Ljava/lang/Boolean;"); + keep = JNI(CallStaticObjectMethod, boolean_class, boolean_valueOf, + keep_value); } const ddwaf_object *duration_obj = diff --git a/src/main/java/com/datadog/ddwaf/Waf.java b/src/main/java/com/datadog/ddwaf/Waf.java index 39b0f7f6..d66f39d1 100644 --- a/src/main/java/com/datadog/ddwaf/Waf.java +++ b/src/main/java/com/datadog/ddwaf/Waf.java @@ -104,7 +104,7 @@ public static class ResultWithData { public final String data; public final Map> actions; public final Map attributes; - public final boolean keep; + public final Boolean keep; public final long duration; // in nanoseconds public final boolean events; @@ -113,7 +113,7 @@ public ResultWithData( String data, Map> actions, Map attributes, - boolean keep, + Boolean keep, long duration, boolean events) { this.result = result;