mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-07 16:14:26 +01:00
fuzz: add a fuzz target for common/bigsize
Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
This commit is contained in:
committed by
Christian Decker
parent
5d987f2dec
commit
a89a018475
36
tests/fuzz/fuzz-bigsize.c
Normal file
36
tests/fuzz/fuzz-bigsize.c
Normal file
@@ -0,0 +1,36 @@
|
||||
#include <assert.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <tests/fuzz/libfuzz.h>
|
||||
|
||||
#include <ccan/tal/tal.h>
|
||||
#include <common/bigsize.h>
|
||||
|
||||
void init(int *argc, char ***argv)
|
||||
{
|
||||
}
|
||||
|
||||
void run(const uint8_t *data, size_t size)
|
||||
{
|
||||
uint8_t *wire_buff, buff[BIGSIZE_MAX_LEN];
|
||||
const uint8_t **wire_chunks, *wire_ptr;
|
||||
size_t wire_max;
|
||||
|
||||
wire_chunks = get_chunks(NULL, data, size, 8);
|
||||
for (size_t i = 0; i < tal_count(wire_chunks); i++) {
|
||||
wire_max = tal_count(wire_chunks[i]);
|
||||
wire_ptr = wire_chunks[i];
|
||||
|
||||
bigsize_t bs = fromwire_bigsize(&wire_ptr, &wire_max);
|
||||
if (bs != 0) {
|
||||
/* We have a valid bigsize type, now we should not error. */
|
||||
assert(bigsize_put(buff, bs) > 0);
|
||||
assert(bigsize_len(bs));
|
||||
|
||||
wire_buff = tal_arr(NULL, uint8_t, 8);
|
||||
towire_bigsize(&wire_buff, bs);
|
||||
tal_free(wire_buff);
|
||||
}
|
||||
}
|
||||
tal_free(wire_chunks);
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
#include <tests/fuzz/libfuzz.h>
|
||||
|
||||
#include <ccan/tal/tal.h>
|
||||
#include <common/utils.h>
|
||||
#include <string.h>
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
||||
int LLVMFuzzerInitialize(int *argc, char ***argv);
|
||||
|
||||
@@ -14,3 +18,16 @@ int LLVMFuzzerInitialize(int *argc, char ***argv) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const uint8_t **get_chunks(const void *ctx, const uint8_t *data,
|
||||
size_t data_size, size_t chunk_size)
|
||||
{
|
||||
size_t n_chunks = data_size / chunk_size;
|
||||
const uint8_t **chunks = tal_arr(ctx, const uint8_t *, n_chunks);
|
||||
|
||||
for (size_t i = 0; i < n_chunks; i++)
|
||||
chunks[i] = tal_dup_arr(chunks, const uint8_t,
|
||||
data + i * chunk_size, chunk_size, 0);
|
||||
|
||||
return chunks;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user