Skip to content

Commit

Permalink
JNI build ok
Browse files Browse the repository at this point in the history
  • Loading branch information
sezen-datadog committed Feb 26, 2025
1 parent bdc4df7 commit 5a4e00b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 35 deletions.
53 changes: 20 additions & 33 deletions src/main/c/powerwaf_jni.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ static void _throw_pwaf_exception(JNIEnv *env, DDWAF_RET_CODE retcode);
static void _throw_pwaf_timeout_exception(JNIEnv *env);
static void _update_metrics(JNIEnv *env, jobject metrics_obj, const ddwaf_result *ret, struct timespec start);
static bool _convert_ddwaf_config_checked(JNIEnv *env, jobject jconfig, ddwaf_config *out_config);
static void _dispose_of_ddwaf_config(ddwaf_config *cfg);
static jobject _create_result_checked(JNIEnv *env, DDWAF_RET_CODE code, const ddwaf_result *ret);
static inline bool _has_derivative(const ddwaf_result *res);

Expand Down Expand Up @@ -533,46 +532,38 @@ ddwaf_builder get_pwaf_builder_checked(JNIEnv *env, jobject builder) {
return (ddwaf_builder) (intptr_t) builder_ptr;
}

//JNIEXPORT jobject JNICALL Java_io_sqreen_powerwaf_Powerwaf_addOrUpdateConfig
// (JNIEnv *env, jobject builder, jstring path, jobject configuration, jobject diagnostics)
//{
// ddwaf_object *ddwaf_diagnostics = NULL;
// ddwaf_object ddwaf_configuration =_convert_checked(env, configuration, NULL, 0);
// uint32_t path_length = JNI(GetStringLength, path);
// ddwaf_builder ddwaf_builder = get_pwaf_builder_checked(env, builder);
// ddwaf_builder_add_or_update_config(ddwaf_builder, path, path_length, ddwaf_configuration, &ddwaf_diagnostics);
// ddwaf_object_free(&ddwaf_configuration);
// jobjectArray ruleSetInfoArray = NULL;
// ddwaf_object_free(ddwaf_diagnostics);
// return ruleSetInfoArray;
//}


JNIEXPORT jlong JNICALL Java_io_sqreen_powerwaf_Builder_initBuilder
(JNIEnv *env, jobject config)
{
JNIEXPORT jobject JNICALL Java_io_sqreen_powerwaf_Powerwaf_addOrUpdateConfig(JNIEnv *env, jobject builder,
jstring path, jobject configuration, jobject diagnostics) {
ddwaf_object *ddwaf_diagnostics = NULL;
ddwaf_object ddwaf_configuration =_convert_checked(env, configuration, NULL, 0);
uint32_t path_length = JNI(GetStringLength, path);
ddwaf_builder ddwaf_builder = get_pwaf_builder_checked(env, builder);
const char *path_ddwaf = JNI(GetStringUTFChars, path, NULL);
ddwaf_builder_add_or_update_config(ddwaf_builder, path_ddwaf, path_length, &ddwaf_configuration, ddwaf_diagnostics);
ddwaf_object_free(&ddwaf_configuration);
jobjectArray ruleSetInfoArray = NULL;
ddwaf_object_free(ddwaf_diagnostics);
return ruleSetInfoArray;
}


JNIEXPORT jlong JNICALL Java_io_sqreen_powerwaf_Builder_initBuilder(JNIEnv *env, jobject config) {
ddwaf_config ddwaf_configuration;
_convert_ddwaf_config_checked(env, config, &ddwaf_configuration);
ddwaf_builder builder = ddwaf_builder_init(&ddwaf_configuration);
return (jlong) (intptr_t) builder;
}
JNIEXPORT jlong JNICALL Java_io_sqreen_powerwaf_Powerwaf_buildInstance
(JNIEnv *env, jlong builder_ptr)
{
JNIEXPORT jlong JNICALL Java_io_sqreen_powerwaf_Powerwaf_buildInstance(JNIEnv *env, jlong builder_ptr) {
ddwaf_builder builder = (ddwaf_builder) (intptr_t) builder_ptr;
ddwaf_handle ddwaf_handle = ddwaf_builder_build_instance(builder);
return (jlong) (intptr_t) ddwaf_handle;
}

JNIEXPORT void JNICALL Java_io_sqreen_powerwaf_Powerwaf_destroyInstance
(JNIEnv *env, jlong waf_handle)
{
JNIEXPORT void JNICALL Java_io_sqreen_powerwaf_Powerwaf_destroyInstance(JNIEnv *env, jlong waf_handle) {
ddwaf_handle handle = (ddwaf_handle) (intptr_t) waf_handle;
ddwaf_destroy(handle);
}
JNIEXPORT void JNICALL Java_io_sqreen_powerwaf_Powerwaf_destroyBuilder
(JNIEnv *env, jlong builder_ptr)
{
JNIEXPORT void JNICALL Java_io_sqreen_powerwaf_Powerwaf_destroyBuilder(JNIEnv *env, jlong builder_ptr) {
ddwaf_builder builder = (ddwaf_builder) (intptr_t) builder_ptr;
ddwaf_builder_destroy(builder);
}
Expand Down Expand Up @@ -2080,11 +2071,7 @@ static bool _convert_ddwaf_config_checked(JNIEnv *env, jobject jconfig,

return true;
}
static void _dispose_of_ddwaf_config(ddwaf_config *cfg)
{
free((void *) (uintptr_t) cfg->obfuscator.key_regex);
free((void *) (uintptr_t) cfg->obfuscator.value_regex);
}


static jobject _create_result_checked(JNIEnv *env, DDWAF_RET_CODE code,
const ddwaf_result *ret)
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/io/sqreen/powerwaf/Powerwaf.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ public static PowerwafContext createContext(
public static native PowerwafHandle buildInstance(Builder builder);

public static native void destroyInstance(PowerwafHandle handle);
public static native void destroyBuilder(Builder builder);
private static native void destroyBuilder(Builder builder);

public static native boolean addOrUpdateConfig(Builder builder, String path, Map<String, Object> definition, RuleSetInfo[] infoRef);
private static native boolean addOrUpdateConfig(Builder builder, String path, Map<String, Object> definition, RuleSetInfo[] infoRef);

/* pw_clearRuleH */
static native void clearRules(PowerwafHandle handle);
Expand Down

0 comments on commit 5a4e00b

Please sign in to comment.