suricata
fuzz_decodebase64.c
Go to the documentation of this file.
1 /**
2  * @file
3  * @author Shivani Bhardwaj <shivani@oisf.net>
4  * fuzz target for DecodeBase64
5  */
6 
7 #include "suricata-common.h"
8 #include "suricata.h"
9 #include "rust.h"
10 #include "nallocinc.c"
11 
12 #define BLK_SIZE 2
13 
14 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
15 
16 static int initialized = 0;
17 
18 static void Base64FuzzTest(const uint8_t *src, size_t len)
19 {
20  uint32_t decoded_len = SCBase64DecodeBufferSize((uint32_t)len);
21  uint8_t *decoded = SCCalloc(decoded_len, sizeof(uint8_t));
22 
23  for (uint8_t mode = SCBase64ModeRFC2045; mode <= SCBase64ModeStrict; mode++) {
24  (void)SCBase64Decode(src, len, mode, decoded);
25  }
26 
27  SCFree(decoded);
28 }
29 
30 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
31 {
32  if (initialized == 0) {
33  // Redirects logs to /dev/null
34  setenv("SC_LOG_OP_IFACE", "file", 0);
35  setenv("SC_LOG_FILE", "/dev/null", 0);
36  // global init
37  InitGlobal();
39  nalloc_init(NULL);
40  // do not restrict nalloc
41  initialized = 1;
42  }
43 
44  if (size < BLK_SIZE)
45  return 0;
46 
47  nalloc_start(data, size);
48  Base64FuzzTest(data, size);
49  nalloc_end();
50 
51  return 0;
52 }
len
uint8_t len
Definition: app-layer-dnp3.h:2
rust.h
nallocinc.c
SCRunmodeSet
void SCRunmodeSet(SCRunMode run_mode)
Set the current run mode.
Definition: suricata.c:288
LLVMFuzzerTestOneInput
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
Definition: fuzz_decodebase64.c:30
RUNMODE_UNITTEST
@ RUNMODE_UNITTEST
Definition: runmodes.h:41
setenv
void setenv(const char *name, const char *value, int overwrite)
nalloc_init
#define nalloc_init(x)
Definition: nallocinc.c:49
suricata-common.h
nalloc_start
#define nalloc_start(x, y)
Definition: nallocinc.c:51
nalloc_end
#define nalloc_end()
Definition: nallocinc.c:52
BLK_SIZE
#define BLK_SIZE
Definition: fuzz_decodebase64.c:12
SCFree
#define SCFree(p)
Definition: util-mem.h:61
src
uint16_t src
Definition: app-layer-dnp3.h:5
suricata.h
InitGlobal
int InitGlobal(void)
Global initialization common to all runmodes.
Definition: suricata.c:2998
SCCalloc
#define SCCalloc(nm, sz)
Definition: util-mem.h:53