suricata
fuzz_siginit.c
Go to the documentation of this file.
1
/**
2
* @file
3
* @author Philippe Antoine <contact@catenacyber.fr>
4
* fuzz target for SigInit
5
*/
6
7
8
#include "
suricata-common.h
"
9
#include "
util-reference-config.h
"
10
#include "
util-classification-config.h
"
11
#include "
detect-engine.h
"
12
#include "
detect-parse.h
"
13
14
int
LLVMFuzzerTestOneInput
(
const
uint8_t *data,
size_t
size);
15
16
static
uint32_t cnt = 0;
17
DetectEngineCtx
*
de_ctx
= NULL;
18
19
int
LLVMFuzzerTestOneInput
(
const
uint8_t *data,
size_t
size)
20
{
21
if
(
de_ctx
== NULL) {
22
setenv
(
"SC_LOG_OP_IFACE"
,
"file"
, 0);
23
setenv
(
"SC_LOG_FILE"
,
"/dev/null"
, 0);
24
//global init
25
InitGlobal
();
26
run_mode
=
RUNMODE_UNITTEST
;
27
MpmTableSetup
();
28
SpmTableSetup
();
29
SigTableSetup
();
30
SCReferenceConfInit
();
31
SCClassConfInit
();
32
}
33
if
(cnt++ == 1024) {
34
DetectEngineCtxFree
(
de_ctx
);
35
de_ctx
= NULL;
36
cnt = 0;
37
}
38
if
(
de_ctx
== NULL) {
39
de_ctx
=
DetectEngineCtxInit
();
40
BUG_ON
(
de_ctx
== NULL);
41
de_ctx
->
flags
|=
DE_QUIET
;
42
de_ctx
->
rule_file
= (
char
*)
"fuzzer"
;
43
}
44
45
char
* buffer = malloc(size+1);
46
if
(buffer) {
47
memcpy(buffer, data, size);
48
//null terminate string
49
buffer[size] = 0;
50
Signature
*s =
SigInit
(
de_ctx
, buffer);
51
free(buffer);
52
if
(s && s->
next
) {
53
SigFree
(
de_ctx
, s->
next
);
54
s->
next
= NULL;
55
}
56
SigFree
(
de_ctx
, s);
57
}
58
59
return
0;
60
}
detect-engine.h
SCReferenceConfInit
void SCReferenceConfInit(void)
Definition:
util-reference-config.c:56
RUNMODE_UNITTEST
@ RUNMODE_UNITTEST
Definition:
runmodes.h:41
SigFree
void SigFree(DetectEngineCtx *, Signature *)
Definition:
detect-parse.c:1397
DetectEngineCtx_::rule_file
char * rule_file
Definition:
detect.h:890
SigTableSetup
void SigTableSetup(void)
Definition:
detect-engine-register.c:451
DetectEngineCtx_
main detection engine ctx
Definition:
detect.h:785
DetectEngineCtxFree
void DetectEngineCtxFree(DetectEngineCtx *)
Free a DetectEngineCtx::
Definition:
detect-engine.c:2442
DE_QUIET
#define DE_QUIET
Definition:
detect.h:287
Signature_::next
struct Signature_ * next
Definition:
detect.h:614
de_ctx
DetectEngineCtx * de_ctx
Definition:
fuzz_siginit.c:17
SpmTableSetup
void SpmTableSetup(void)
Definition:
util-spm.c:122
util-reference-config.h
SigInit
Signature * SigInit(DetectEngineCtx *de_ctx, const char *sigstr)
Parses a signature and adds it to the Detection Engine Context.
Definition:
detect-parse.c:2129
BUG_ON
#define BUG_ON(x)
Definition:
suricata-common.h:289
MpmTableSetup
void MpmTableSetup(void)
Definition:
util-mpm.c:215
setenv
void setenv(const char *name, const char *value, int overwrite)
suricata-common.h
run_mode
int run_mode
Definition:
suricata.c:167
util-classification-config.h
SCClassConfInit
void SCClassConfInit(void)
Definition:
util-classification-config.c:64
LLVMFuzzerTestOneInput
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
Definition:
fuzz_siginit.c:19
detect-parse.h
Signature_
Signature container.
Definition:
detect.h:540
DetectEngineCtxInit
DetectEngineCtx * DetectEngineCtxInit(void)
Definition:
detect-engine.c:2403
DetectEngineCtx_::flags
uint8_t flags
Definition:
detect.h:786
InitGlobal
int InitGlobal(void)
Global initialization common to all runmodes.
Definition:
suricata.c:2842
src
tests
fuzz
fuzz_siginit.c
Generated on Sun Feb 5 2023 23:30:41 for suricata by
1.8.18