mirror of
https://github.com/obgm/libcoap.git
synced 2026-10-28 13:35:47 +03:00
OSS-Fuzz: Add oscore conf parse fuzzer
This commit is contained in:
1 parent
0bcd5923e7
commit
d2b61c2e49
1 file changed
+46
@@ -0,0 +1,46 @@
|
||||
#include "coap3/coap_internal.h"
|
||||
|
||||
int
|
||||
LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
coap_oscore_conf_t *oscore_conf;
|
||||
coap_str_const_t conf_mem;
|
||||
cose_encrypt0_t cose[1];
|
||||
uint8_t *buf;
|
||||
|
||||
if (size < 1)
|
||||
return 0;
|
||||
|
||||
/* Initialize libcoap */
|
||||
coap_startup();
|
||||
coap_set_log_level(COAP_LOG_EMERG);
|
||||
|
||||
/* The coap_new_oscore_conf() API expects null-terminated input data. */
|
||||
buf = (uint8_t *)malloc(size + 1);
|
||||
if (buf == NULL) {
|
||||
coap_cleanup();
|
||||
return 0;
|
||||
}
|
||||
memcpy(buf, data, size);
|
||||
buf[size] = '\0';
|
||||
|
||||
/* Initialisation */
|
||||
conf_mem.s = buf;
|
||||
conf_mem.length = size + 1;
|
||||
|
||||
/* Attempt to parse the fuzzer input as OSCORE configuration */
|
||||
oscore_conf = coap_new_oscore_conf(conf_mem, NULL, NULL, 0);
|
||||
|
||||
/* Clean up if parsing succeeded */
|
||||
if (oscore_conf) {
|
||||
coap_delete_oscore_conf(oscore_conf);
|
||||
}
|
||||
|
||||
free(buf);
|
||||
|
||||
/* Attempt to decode OSCORE option value */
|
||||
cose_encrypt0_init(cose);
|
||||
oscore_decode_option_value(data, size, cose);
|
||||
|
||||
coap_cleanup();
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user