mirror of https://github.com/OISF/suricata
parent
6d92596548
commit
2e6777c8e3
@ -0,0 +1,52 @@
|
|||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @author Shivani Bhardwaj <shivani@oisf.net>
|
||||||
|
* fuzz target for DecodeBase64
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "suricata-common.h"
|
||||||
|
#include "suricata.h"
|
||||||
|
#include "util-base64.h"
|
||||||
|
|
||||||
|
#define BLK_SIZE 2
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
||||||
|
|
||||||
|
static int initialized = 0;
|
||||||
|
|
||||||
|
static void Base64FuzzTest(const uint8_t *src, size_t len, size_t dest_size)
|
||||||
|
{
|
||||||
|
uint8_t *dest = malloc(dest_size);
|
||||||
|
if (dest == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (uint8_t mode = BASE64_MODE_RELAX; mode <= BASE64_MODE_RFC4648; mode++) {
|
||||||
|
uint32_t consumed_bytes = 0;
|
||||||
|
uint32_t decoded_bytes = 0;
|
||||||
|
|
||||||
|
DecodeBase64(dest, dest_size, src, len, &consumed_bytes, &decoded_bytes, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(dest);
|
||||||
|
}
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
||||||
|
{
|
||||||
|
if (initialized == 0) {
|
||||||
|
// Redirects logs to /dev/null
|
||||||
|
setenv("SC_LOG_OP_IFACE", "file", 0);
|
||||||
|
setenv("SC_LOG_FILE", "/dev/null", 0);
|
||||||
|
// global init
|
||||||
|
InitGlobal();
|
||||||
|
SCRunmodeSet(RUNMODE_UNITTEST);
|
||||||
|
initialized = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (size < BLK_SIZE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
uint32_t dest_size = (uint32_t)(data[0] << 8) | (uint32_t)(data[1]);
|
||||||
|
Base64FuzzTest(data + BLK_SIZE, size - BLK_SIZE, dest_size);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue