Antoine Poinsot
4 years ago
committed by
Christian Decker
3 changed files with 67 additions and 6 deletions
@ -0,0 +1,61 @@ |
|||||
|
#include <assert.h> |
||||
|
#include <stdint.h> |
||||
|
#include <tests/fuzz/libfuzz.h> |
||||
|
|
||||
|
#include <ccan/tal/tal.h> |
||||
|
#include <common/amount.h> |
||||
|
#include <common/utils.h> |
||||
|
|
||||
|
void init(int *argc, char ***argv) |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
void run(const uint8_t *data, size_t size) |
||||
|
{ |
||||
|
struct amount_msat msat; |
||||
|
struct amount_sat sat; |
||||
|
char *string; |
||||
|
uint8_t *buf; |
||||
|
const char *fmt_msat, *fmt_msatbtc, *fmt_sat, *fmt_satbtc; |
||||
|
|
||||
|
|
||||
|
/* We should not crash when parsing any string. */ |
||||
|
|
||||
|
string = tal_arr(NULL, char, size); |
||||
|
for (size_t i = 0; i < size; i++) |
||||
|
string[i] = (char) data[i] % (CHAR_MAX + 1); |
||||
|
|
||||
|
parse_amount_msat(&msat, string, tal_count(string)); |
||||
|
parse_amount_sat(&sat, string, tal_count(string)); |
||||
|
tal_free(string); |
||||
|
|
||||
|
|
||||
|
/* Same with the wire primitives. */ |
||||
|
|
||||
|
buf = tal_arr(NULL, uint8_t, 8); |
||||
|
|
||||
|
msat = fromwire_amount_msat(&data, &size); |
||||
|
towire_amount_msat(&buf, msat); |
||||
|
sat = fromwire_amount_sat(&data, &size); |
||||
|
towire_amount_sat(&buf, sat); |
||||
|
|
||||
|
tal_free(buf); |
||||
|
|
||||
|
|
||||
|
/* Format should inconditionally produce valid amount strings according to our
|
||||
|
* parser */ |
||||
|
|
||||
|
fmt_msat = fmt_amount_msat(NULL, &msat); |
||||
|
fmt_msatbtc = fmt_amount_msat_btc(NULL, &msat, true); |
||||
|
assert(parse_amount_msat(&msat, fmt_msat, tal_count(fmt_msat))); |
||||
|
assert(parse_amount_msat(&msat, fmt_msatbtc, tal_count(fmt_msatbtc))); |
||||
|
tal_free(fmt_msat); |
||||
|
tal_free(fmt_msatbtc); |
||||
|
|
||||
|
fmt_sat = fmt_amount_sat(NULL, &sat); |
||||
|
fmt_satbtc = fmt_amount_sat_btc(NULL, &sat, true); |
||||
|
assert(parse_amount_sat(&sat, fmt_sat, tal_count(fmt_sat))); |
||||
|
assert(parse_amount_sat(&sat, fmt_satbtc, tal_count(fmt_satbtc))); |
||||
|
tal_free(fmt_sat); |
||||
|
tal_free(fmt_satbtc); |
||||
|
} |
Loading…
Reference in new issue