mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-22 00:24:19 +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;
|
uint8_t *data_out;
|
||||||
size_t data_out_len, bech32_str_cap;
|
size_t data_out_len, bech32_str_cap;
|
||||||
int wit_version;
|
int wit_version;
|
||||||
bech32_encoding benc;
|
bech32_encoding benc, benc_decoded;
|
||||||
|
|
||||||
if (size < 1)
|
if (size < 1)
|
||||||
return;
|
return;
|
||||||
@@ -30,8 +30,14 @@ void run(const uint8_t *data, size_t size)
|
|||||||
bech32_str_cap, benc) == 1) {
|
bech32_str_cap, benc) == 1) {
|
||||||
hrp_out = malloc(strlen(bech32_str) - 6);
|
hrp_out = malloc(strlen(bech32_str) - 6);
|
||||||
data_out = malloc(strlen(bech32_str) - 8);
|
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(hrp_out);
|
||||||
free(data_out);
|
free(data_out);
|
||||||
}
|
}
|
||||||
@@ -47,11 +53,22 @@ void run(const uint8_t *data, size_t size)
|
|||||||
|
|
||||||
addr = malloc(73 + strlen(hrp_addr));
|
addr = malloc(73 + strlen(hrp_addr));
|
||||||
wit_version = 0;
|
wit_version = 0;
|
||||||
if (segwit_addr_encode(addr, hrp_addr, wit_version, data, size) == 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);
|
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;
|
wit_version = 1;
|
||||||
if (segwit_addr_encode(addr, hrp_addr, wit_version, data, size) == 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);
|
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(addr);
|
||||||
|
|
||||||
free(data_out);
|
free(data_out);
|
||||||
|
|||||||
Reference in New Issue
Block a user