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
11#define BLK_SIZE 2
12
13int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
14
15static int initialized = 0;
16
17static void Base64FuzzTest(const uint8_t *src, size_t len)
18{
19 uint32_t decoded_len = SCBase64DecodeBufferSize((uint32_t)len);
20 uint8_t *decoded = SCCalloc(decoded_len, sizeof(uint8_t));
21
22 for (uint8_t mode = SCBase64ModeRFC2045; mode <= SCBase64ModeStrict; mode++) {
23 (void)SCBase64Decode(src, len, mode, decoded);
24 }
25
26 SCFree(decoded);
27}
28
29int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
30{
31 if (initialized == 0) {
32 // Redirects logs to /dev/null
33 setenv("SC_LOG_OP_IFACE", "file", 0);
34 setenv("SC_LOG_FILE", "/dev/null", 0);
35 // global init
36 InitGlobal();
38 initialized = 1;
39 }
40
41 if (size < BLK_SIZE)
42 return 0;
43
44 Base64FuzzTest(data, size);
45
46 return 0;
47}
uint8_t len
uint16_t src
#define BLK_SIZE
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
@ RUNMODE_UNITTEST
Definition runmodes.h:41
int InitGlobal(void)
Global initialization common to all runmodes.
Definition suricata.c:2965
void SCRunmodeSet(SCRunMode run_mode)
Set the current run mode.
Definition suricata.c:284
#define SCFree(p)
Definition util-mem.h:61
#define SCCalloc(nm, sz)
Definition util-mem.h:53
void setenv(const char *name, const char *value, int overwrite)