From d14af54b3bfe725f76287452b916e55088d3efa0 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Tue, 7 Apr 2026 11:38:20 +0200 Subject: [PATCH] detect/transforms: constify some callbacks arguments Ticket: 8298 --- rust/src/detect/transforms/base64.rs | 4 ++-- rust/src/detect/transforms/casechange.rs | 8 ++++---- rust/src/detect/transforms/compress_whitespace.rs | 4 ++-- rust/src/detect/transforms/decompress.rs | 6 +++--- rust/src/detect/transforms/domain.rs | 4 ++-- rust/src/detect/transforms/dotprefix.rs | 2 +- rust/src/detect/transforms/hash.rs | 6 +++--- rust/src/detect/transforms/http_headers.rs | 4 ++-- rust/src/detect/transforms/strip_whitespace.rs | 4 ++-- rust/src/detect/transforms/urldecode.rs | 2 +- rust/src/detect/transforms/xor.rs | 4 ++-- rust/sys/src/sys.rs | 6 +++--- src/detect-engine-helper.c | 11 ++++------- src/detect-engine-helper.h | 6 +++--- src/detect-transform-luaxform.c | 8 ++++---- src/detect-transform-pcrexform.c | 8 ++++---- src/detect.h | 6 +++--- 17 files changed, 45 insertions(+), 48 deletions(-) diff --git a/rust/src/detect/transforms/base64.rs b/rust/src/detect/transforms/base64.rs index 3b96d2518d..ccbcb00506 100644 --- a/rust/src/detect/transforms/base64.rs +++ b/rust/src/detect/transforms/base64.rs @@ -224,7 +224,7 @@ unsafe extern "C" fn base64_setup( return r; } -unsafe extern "C" fn base64_id(data: *mut *const u8, length: *mut u32, ctx: *mut c_void) { +unsafe extern "C" fn base64_id(data: *mut *const u8, length: *mut u32, ctx: *const c_void) { if data.is_null() || length.is_null() || ctx.is_null() { return; } @@ -237,7 +237,7 @@ unsafe extern "C" fn base64_id(data: *mut *const u8, length: *mut u32, ctx: *mut } unsafe extern "C" fn base64_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; diff --git a/rust/src/detect/transforms/casechange.rs b/rust/src/detect/transforms/casechange.rs index 6cdf9c7da4..02e8bceb9d 100644 --- a/rust/src/detect/transforms/casechange.rs +++ b/rust/src/detect/transforms/casechange.rs @@ -41,7 +41,7 @@ fn tolower_transform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn tolower_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -62,7 +62,7 @@ unsafe extern "C" fn tolower_transform( SCInspectionBufferTruncate(buffer, input_len); } -unsafe extern "C" fn tolower_validate(content: *const u8, len: u16, _ctx: *mut c_void) -> bool { +unsafe extern "C" fn tolower_validate(content: *const u8, len: u16, _ctx: *const c_void) -> bool { let input = build_slice!(content, len as usize); for &c in input { if c.is_ascii_uppercase() { @@ -104,7 +104,7 @@ fn toupper_transform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn toupper_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -125,7 +125,7 @@ unsafe extern "C" fn toupper_transform( SCInspectionBufferTruncate(buffer, input_len); } -unsafe extern "C" fn toupper_validate(content: *const u8, len: u16, _ctx: *mut c_void) -> bool { +unsafe extern "C" fn toupper_validate(content: *const u8, len: u16, _ctx: *const c_void) -> bool { let input = build_slice!(content, len as usize); for &c in input { if c.is_ascii_lowercase() { diff --git a/rust/src/detect/transforms/compress_whitespace.rs b/rust/src/detect/transforms/compress_whitespace.rs index 704b285e71..e9a37698f4 100644 --- a/rust/src/detect/transforms/compress_whitespace.rs +++ b/rust/src/detect/transforms/compress_whitespace.rs @@ -51,7 +51,7 @@ fn compress_whitespace_transform_do(input: &[u8], output: &mut [u8]) -> u32 { } unsafe extern "C" fn compress_whitespace_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -88,7 +88,7 @@ fn compress_whitespace_validate_do(input: &[u8]) -> bool { } unsafe extern "C" fn compress_whitespace_validate( - content: *const u8, len: u16, _ctx: *mut c_void, + content: *const u8, len: u16, _ctx: *const c_void, ) -> bool { let input = build_slice!(content, len as usize); return compress_whitespace_validate_do(input); diff --git a/rust/src/detect/transforms/decompress.rs b/rust/src/detect/transforms/decompress.rs index bf5d0aa95c..a25f85f4e9 100644 --- a/rust/src/detect/transforms/decompress.rs +++ b/rust/src/detect/transforms/decompress.rs @@ -160,7 +160,7 @@ unsafe fn decompress_transform( } unsafe extern "C" fn gunzip_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *const c_void, ) { let ctx = cast_pointer!(ctx, DetectTransformDecompressData); decompress_transform(buffer, ctx, gunzip_transform_do); @@ -170,7 +170,7 @@ unsafe extern "C" fn decompress_free(_de: *mut DetectEngineCtx, ctx: *mut c_void std::mem::drop(Box::from_raw(ctx as *mut DetectTransformDecompressData)); } -unsafe extern "C" fn decompress_id(data: *mut *const u8, length: *mut u32, ctx: *mut c_void) { +unsafe extern "C" fn decompress_id(data: *mut *const u8, length: *mut u32, ctx: *const c_void) { if data.is_null() || length.is_null() || ctx.is_null() { return; } @@ -202,7 +202,7 @@ fn zlib_deflate_transform_do(input: &[u8], output: &mut [u8]) -> Option { } unsafe extern "C" fn zlib_deflate_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *const c_void, ) { let ctx = cast_pointer!(ctx, DetectTransformDecompressData); decompress_transform(buffer, ctx, zlib_deflate_transform_do); diff --git a/rust/src/detect/transforms/domain.rs b/rust/src/detect/transforms/domain.rs index 49df1aa5a3..d59f475c6e 100644 --- a/rust/src/detect/transforms/domain.rs +++ b/rust/src/detect/transforms/domain.rs @@ -45,7 +45,7 @@ fn get_domain(input: &[u8], output: &mut [u8]) -> u32 { } unsafe extern "C" fn domain_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -84,7 +84,7 @@ fn get_tld(input: &[u8], output: &mut [u8]) -> u32 { } unsafe extern "C" fn tld_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; diff --git a/rust/src/detect/transforms/dotprefix.rs b/rust/src/detect/transforms/dotprefix.rs index 76e745e5b5..2b52462fba 100644 --- a/rust/src/detect/transforms/dotprefix.rs +++ b/rust/src/detect/transforms/dotprefix.rs @@ -43,7 +43,7 @@ fn dot_prefix_transform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn dot_prefix_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input_len = (*buffer).inspect_len; if input_len == 0 { diff --git a/rust/src/detect/transforms/hash.rs b/rust/src/detect/transforms/hash.rs index 8452247d95..763dbc042c 100644 --- a/rust/src/detect/transforms/hash.rs +++ b/rust/src/detect/transforms/hash.rs @@ -52,7 +52,7 @@ fn md5_transform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn md5_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -107,7 +107,7 @@ fn sha1_transform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn sha1_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -162,7 +162,7 @@ fn sha256_transform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn sha256_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; diff --git a/rust/src/detect/transforms/http_headers.rs b/rust/src/detect/transforms/http_headers.rs index b56470cba2..535ea37dfe 100644 --- a/rust/src/detect/transforms/http_headers.rs +++ b/rust/src/detect/transforms/http_headers.rs @@ -54,7 +54,7 @@ fn header_lowertransform_do(input: &[u8], output: &mut [u8]) { } unsafe extern "C" fn header_lowertransform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -119,7 +119,7 @@ fn strip_pseudo_transform_do(input: &[u8], output: &mut [u8]) -> u32 { } unsafe extern "C" fn strip_pseudo_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; diff --git a/rust/src/detect/transforms/strip_whitespace.rs b/rust/src/detect/transforms/strip_whitespace.rs index 25c6fe41a6..75a6d7716b 100644 --- a/rust/src/detect/transforms/strip_whitespace.rs +++ b/rust/src/detect/transforms/strip_whitespace.rs @@ -48,7 +48,7 @@ fn strip_whitespace_transform_do(input: &[u8], output: &mut [u8]) -> u32 { } unsafe extern "C" fn strip_whitespace_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -70,7 +70,7 @@ unsafe extern "C" fn strip_whitespace_transform( } unsafe extern "C" fn strip_whitespace_validate( - content: *const u8, len: u16, _ctx: *mut c_void, + content: *const u8, len: u16, _ctx: *const c_void, ) -> bool { let input = build_slice!(content, len as usize); for &c in input { diff --git a/rust/src/detect/transforms/urldecode.rs b/rust/src/detect/transforms/urldecode.rs index fa4c403fc3..e693080d72 100644 --- a/rust/src/detect/transforms/urldecode.rs +++ b/rust/src/detect/transforms/urldecode.rs @@ -88,7 +88,7 @@ fn url_decode_transform_do(input: &[u8], output: &mut [u8]) -> u32 { } unsafe extern "C" fn url_decode_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, _ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; diff --git a/rust/src/detect/transforms/xor.rs b/rust/src/detect/transforms/xor.rs index a416bd9de8..42454caac6 100644 --- a/rust/src/detect/transforms/xor.rs +++ b/rust/src/detect/transforms/xor.rs @@ -82,7 +82,7 @@ fn xor_transform_do(input: &[u8], output: &mut [u8], ctx: &DetectTransformXorDat } unsafe extern "C" fn xor_transform( - _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *mut c_void, + _det: *mut DetectEngineThreadCtx, buffer: *mut InspectionBuffer, ctx: *const c_void, ) { let input = (*buffer).inspect; let input_len = (*buffer).inspect_len; @@ -108,7 +108,7 @@ unsafe extern "C" fn xor_free(_de: *mut DetectEngineCtx, ctx: *mut c_void) { std::mem::drop(Box::from_raw(ctx as *mut DetectTransformXorData)); } -unsafe extern "C" fn xor_id(data: *mut *const u8, length: *mut u32, ctx: *mut c_void) { +unsafe extern "C" fn xor_id(data: *mut *const u8, length: *mut u32, ctx: *const c_void,) { if data.is_null() || length.is_null() || ctx.is_null() { return; } diff --git a/rust/sys/src/sys.rs b/rust/sys/src/sys.rs index ef904f246b..e417a29ca7 100644 --- a/rust/sys/src/sys.rs +++ b/rust/sys/src/sys.rs @@ -794,21 +794,21 @@ pub struct SCTransformTableElmt { unsafe extern "C" fn( arg1: *mut DetectEngineThreadCtx, arg2: *mut InspectionBuffer, - context: *mut ::std::os::raw::c_void, + context: *const ::std::os::raw::c_void, ), >, pub TransformValidate: ::std::option::Option< unsafe extern "C" fn( content: *const u8, content_len: u16, - context: *mut ::std::os::raw::c_void, + context: *const ::std::os::raw::c_void, ) -> bool, >, pub TransformId: ::std::option::Option< unsafe extern "C" fn( id_data: *mut *const u8, id_length: *mut u32, - context: *mut ::std::os::raw::c_void, + context: *const ::std::os::raw::c_void, ), >, } diff --git a/src/detect-engine-helper.c b/src/detect-engine-helper.c index e3ff76c5ae..fe461febdf 100644 --- a/src/detect-engine-helper.c +++ b/src/detect-engine-helper.c @@ -156,16 +156,13 @@ int SCDetectHelperTransformRegister(const SCTransformTableElmt *kw) sigmatch_table[transform_id].desc = kw->desc; sigmatch_table[transform_id].url = kw->url; sigmatch_table[transform_id].flags = kw->flags; - sigmatch_table[transform_id].Transform = - (void (*)(DetectEngineThreadCtx * det_ctx, InspectionBuffer * buffer, void *options)) - kw->Transform; - sigmatch_table[transform_id].TransformValidate = (bool (*)( - const uint8_t *content, uint16_t content_len, void *context))kw->TransformValidate; + sigmatch_table[transform_id].Transform = (void (*)(DetectEngineThreadCtx * det_ctx, + InspectionBuffer * buffer, const void *options)) kw->Transform; + sigmatch_table[transform_id].TransformValidate = kw->TransformValidate; sigmatch_table[transform_id].Setup = (int (*)(DetectEngineCtx * de, Signature * s, const char *raw)) kw->Setup; sigmatch_table[transform_id].Free = (void (*)(DetectEngineCtx * de, void *ptr)) kw->Free; - sigmatch_table[transform_id].TransformId = - (void (*)(const uint8_t **id_data, uint32_t *length, void *context))kw->TransformId; + sigmatch_table[transform_id].TransformId = kw->TransformId; return transform_id; } diff --git a/src/detect-engine-helper.h b/src/detect-engine-helper.h index 6e8491527b..e6223f444d 100644 --- a/src/detect-engine-helper.h +++ b/src/detect-engine-helper.h @@ -71,9 +71,9 @@ typedef struct SCTransformTableElmt { uint32_t flags; int (*Setup)(DetectEngineCtx *, Signature *, const char *); void (*Free)(DetectEngineCtx *, void *); - void (*Transform)(DetectEngineThreadCtx *, InspectionBuffer *, void *context); - bool (*TransformValidate)(const uint8_t *content, uint16_t content_len, void *context); - void (*TransformId)(const uint8_t **id_data, uint32_t *id_length, void *context); + void (*Transform)(DetectEngineThreadCtx *, InspectionBuffer *, const void *context); + bool (*TransformValidate)(const uint8_t *content, uint16_t content_len, const void *context); + void (*TransformId)(const uint8_t **id_data, uint32_t *id_length, const void *context); } SCTransformTableElmt; int SCDetectHelperNewKeywordId(void); diff --git a/src/detect-transform-luaxform.c b/src/detect-transform-luaxform.c index 5ed0c0de89..19c6b69ed6 100644 --- a/src/detect-transform-luaxform.c +++ b/src/detect-transform-luaxform.c @@ -40,7 +40,7 @@ static int DetectTransformLuaxformSetup(DetectEngineCtx *, Signature *, const char *); static void DetectTransformLuaxformFree(DetectEngineCtx *de_ctx, void *ptr); static void TransformLuaxform( - DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, void *options); + DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, const void *options); #define LUAXFORM_MAX_ARGS 10 @@ -61,7 +61,7 @@ typedef struct DetectLuaxformThreadData { lua_State *luastate; } DetectLuaxformThreadData; -static void DetectTransformLuaxformId(const uint8_t **data, uint32_t *length, void *context) +static void DetectTransformLuaxformId(const uint8_t **data, uint32_t *length, const void *context) { if (context) { DetectLuaxformData *lua = (DetectLuaxformData *)context; @@ -302,13 +302,13 @@ error: } static void TransformLuaxform( - DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, void *options) + DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, const void *options) { if (buffer->inspect_len == 0) { return; } - DetectLuaxformData *lua = options; + const DetectLuaxformData *lua = options; DetectLuaThreadData *tlua = (DetectLuaThreadData *)DetectThreadCtxGetKeywordThreadCtx(det_ctx, lua->thread_ctx_id); if (tlua == NULL) { diff --git a/src/detect-transform-pcrexform.c b/src/detect-transform-pcrexform.c index 1dd7af34d8..bbb2767b3a 100644 --- a/src/detect-transform-pcrexform.c +++ b/src/detect-transform-pcrexform.c @@ -41,12 +41,12 @@ typedef struct DetectTransformPcrexformData { static int DetectTransformPcrexformSetup (DetectEngineCtx *, Signature *, const char *); static void DetectTransformPcrexformFree(DetectEngineCtx *, void *); static void DetectTransformPcrexform( - DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, void *options); + DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, const void *options); #ifdef UNITTESTS void DetectTransformPcrexformRegisterTests (void); #endif -static void DetectTransformPcrexformId(const uint8_t **data, uint32_t *length, void *context) +static void DetectTransformPcrexformId(const uint8_t **data, uint32_t *length, const void *context) { if (context) { DetectTransformPcrexformData *pxd = (DetectTransformPcrexformData *)context; @@ -157,11 +157,11 @@ static int DetectTransformPcrexformSetup (DetectEngineCtx *de_ctx, Signature *s, } static void DetectTransformPcrexform( - DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, void *options) + DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, const void *options) { const char *input = (const char *)buffer->inspect; const uint32_t input_len = buffer->inspect_len; - DetectTransformPcrexformData *pxd = options; + const DetectTransformPcrexformData *pxd = options; pcre2_match_data *match = pcre2_match_data_create_from_pattern(pxd->regex, NULL); int ret = pcre2_match(pxd->regex, (PCRE2_SPTR8)input, input_len, 0, 0, match, pxd->context); diff --git a/src/detect.h b/src/detect.h index 77eaa91c03..5c6eab3204 100644 --- a/src/detect.h +++ b/src/detect.h @@ -1440,11 +1440,11 @@ typedef struct SigTableElmt_ { uint8_t flags, File *, const Signature *, const SigMatchCtx *); /** InspectionBuffer transformation callback */ - void (*Transform)(DetectEngineThreadCtx *, InspectionBuffer *, void *context); - bool (*TransformValidate)(const uint8_t *content, uint16_t content_len, void *context); + void (*Transform)(DetectEngineThreadCtx *, InspectionBuffer *, const void *context); + bool (*TransformValidate)(const uint8_t *content, uint16_t content_len, const void *context); /** Transform identity callback */ - void (*TransformId)(const uint8_t **data, uint32_t *length, void *context); + void (*TransformId)(const uint8_t **data, uint32_t *length, const void *context); /** keyword setup function pointer */ int (*Setup)(DetectEngineCtx *, Signature *, const char *);