From 4aa165e7a2de95972404264c111d36e223f67068 Mon Sep 17 00:00:00 2001 From: Matt Morehouse Date: Mon, 21 Aug 2023 15:58:53 -0500 Subject: [PATCH] fuzz: target for revoke_and_ack Fuzz the decoding and encoding of revoke_and_ack. --- tests/fuzz/fuzz-wire-revoke_and_ack.c | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/fuzz/fuzz-wire-revoke_and_ack.c diff --git a/tests/fuzz/fuzz-wire-revoke_and_ack.c b/tests/fuzz/fuzz-wire-revoke_and_ack.c new file mode 100644 index 000000000..acb3bdae8 --- /dev/null +++ b/tests/fuzz/fuzz-wire-revoke_and_ack.c @@ -0,0 +1,40 @@ +#include "config.h" +#include +#include +#include + +struct revoke_and_ack { + struct channel_id channel_id; + struct secret per_commitment_secret; + struct pubkey next_per_commitment_point; +}; + +static void *encode(const tal_t *ctx, const struct revoke_and_ack *s) +{ + return towire_revoke_and_ack(ctx, &s->channel_id, + &s->per_commitment_secret, + &s->next_per_commitment_point); +} + +static struct revoke_and_ack *decode(const tal_t *ctx, const void *p) +{ + struct revoke_and_ack *s = tal(ctx, struct revoke_and_ack); + + if (fromwire_revoke_and_ack(p, &s->channel_id, + &s->per_commitment_secret, + &s->next_per_commitment_point)) + return s; + return tal_free(s); +} + +static bool equal(const struct revoke_and_ack *x, + const struct revoke_and_ack *y) +{ + return memcmp(x, y, sizeof(*x)) == 0; +} + +void run(const u8 *data, size_t size) +{ + test_decode_encode(data, size, WIRE_REVOKE_AND_ACK, + struct revoke_and_ack); +}