MCPcopy Create free account
hub / github.com/ElementsProject/lightning / run

Function run

tests/fuzz/fuzz-amount-arith.c:46–237  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44};
45
46void run(const uint8_t *data, size_t size) {
47 u8 op;
48 u64 u64_param;
49 double f;
50 struct amount_msat a, b, out_ms;
51 struct amount_sat sa, sb, out_s;
52
53 a = fromwire_amount_msat_bounded(&data, &size);
54 b = fromwire_amount_msat_bounded(&data, &size);
55 sa = amount_msat_to_sat_round_down(a);
56 sb = amount_msat_to_sat_round_down(b);
57
58 u64_param = fromwire_u64(&data, &size);
59 op = fromwire_u8(&data, &size) % OP_COUNT;
60
61 if (size < sizeof(f))
62 return;
63 memcpy(&f, data, sizeof(f));
64 data += sizeof(f);
65
66 switch (op) {
67 case OP_MSAT_ADD:
68 {
69 if (amount_msat_add(&out_ms, a, b))
70 assert(out_ms.millisatoshis == a.millisatoshis + b.millisatoshis);
71 break;
72 }
73 case OP_MSAT_SUB:
74 {
75 if (amount_msat_sub(&out_ms, a, b))
76 assert(out_ms.millisatoshis + b.millisatoshis == a.millisatoshis);
77 break;
78 }
79 case OP_MSAT_MUL:
80 {
81 if (amount_msat_mul(&out_ms, a, u64_param))
82 assert(out_ms.millisatoshis == a.millisatoshis * u64_param);
83 break;
84 }
85 case OP_MSAT_DIV:
86 {
87 if (u64_param == 0)
88 break;
89 out_ms = amount_msat_div(a, u64_param);
90 assert(out_ms.millisatoshis == a.millisatoshis / u64_param);
91 break;
92 }
93 case OP_MSAT_RATIO:
94 {
95 if (b.millisatoshis == 0)
96 break;
97 double ratio = amount_msat_ratio(a, b);
98 double expected = (double)a.millisatoshis / b.millisatoshis;
99 assert(ratio == expected);
100 break;
101 }
102 case OP_MSAT_RATIO_FLOOR:
103 {

Callers

nothing calls this directly

Calls 15

amount_msat_addFunction · 0.85
amount_msat_subFunction · 0.85
amount_msat_mulFunction · 0.85
amount_msat_divFunction · 0.85
amount_msat_ratioFunction · 0.85
amount_msat_ratio_floorFunction · 0.85
amount_msat_ratio_ceilFunction · 0.85
amount_msat_scaleFunction · 0.85
amount_msat_add_satFunction · 0.85
amount_msat_sub_satFunction · 0.85
amount_sat_mulFunction · 0.85

Tested by

no test coverage detected