mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-21 16:14:23 +01:00
fuzz: check decoded values
Decoded values should match the original values before encoding.
This commit is contained in:
committed by
Rusty Russell
parent
255413377b
commit
7db1e06fb5
@@ -17,7 +17,7 @@ void run(const uint8_t *data, size_t size)
|
||||
uint8_t *data_out;
|
||||
size_t data_out_len, bech32_str_cap;
|
||||
int wit_version;
|
||||
bech32_encoding benc;
|
||||
bech32_encoding benc, benc_decoded;
|
||||
|
||||
if (size < 1)
|
||||
return;
|
||||
@@ -30,8 +30,14 @@ void run(const uint8_t *data, size_t size)
|
||||
bech32_str_cap, benc) == 1) {
|
||||
hrp_out = malloc(strlen(bech32_str) - 6);
|
||||
data_out = malloc(strlen(bech32_str) - 8);
|
||||
assert(bech32_decode(hrp_out, data_out, &data_out_len,
|
||||
bech32_str, bech32_str_cap) == benc);
|
||||
|
||||
benc_decoded = bech32_decode(hrp_out, data_out, &data_out_len,
|
||||
bech32_str, bech32_str_cap);
|
||||
assert(benc_decoded == benc);
|
||||
assert(strcmp(hrp_inv, hrp_out) == 0);
|
||||
assert(data_out_len == size - 1);
|
||||
assert(memcmp(data_out, data + 1, data_out_len) == 0);
|
||||
|
||||
free(hrp_out);
|
||||
free(data_out);
|
||||
}
|
||||
@@ -47,11 +53,22 @@ void run(const uint8_t *data, size_t size)
|
||||
|
||||
addr = malloc(73 + strlen(hrp_addr));
|
||||
wit_version = 0;
|
||||
if (segwit_addr_encode(addr, hrp_addr, wit_version, data, size) == 1)
|
||||
segwit_addr_decode(&wit_version, data_out, &data_out_len, hrp_addr, addr);
|
||||
if (segwit_addr_encode(addr, hrp_addr, wit_version, data, size) == 1) {
|
||||
assert(segwit_addr_decode(&wit_version, data_out, &data_out_len,
|
||||
hrp_addr, addr) == 1);
|
||||
assert(wit_version == 0);
|
||||
assert(data_out_len == size);
|
||||
assert(memcmp(data_out, data, data_out_len) == 0);
|
||||
}
|
||||
|
||||
wit_version = 1;
|
||||
if (segwit_addr_encode(addr, hrp_addr, wit_version, data, size) == 1)
|
||||
segwit_addr_decode(&wit_version, data_out, &data_out_len, hrp_addr, addr);
|
||||
if (segwit_addr_encode(addr, hrp_addr, wit_version, data, size) == 1) {
|
||||
assert(segwit_addr_decode(&wit_version, data_out, &data_out_len,
|
||||
hrp_addr, addr) == 1);
|
||||
assert(wit_version == 1);
|
||||
assert(data_out_len == size);
|
||||
assert(memcmp(data_out, data, data_out_len) == 0);
|
||||
}
|
||||
free(addr);
|
||||
|
||||
free(data_out);
|
||||
|
||||
Reference in New Issue
Block a user