mirror of
https://github.com/OISF/suricata.git
synced 2026-10-11 22:09:53 +00:00
detect/transforms: constify some callbacks arguments
Ticket: 8298
This commit is contained in:
committed by
Victor Julien
parent
cae749bc58
commit
d14af54b3b
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<u32> {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
+3
-3
@@ -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,
|
||||
),
|
||||
>,
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
+3
-3
@@ -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 *);
|
||||
|
||||
Reference in New Issue
Block a user