Skip to content

Commit 94b1ff7

Browse files
jonasnicksanket1729
authored andcommitted
fixup! stack overflow in generators_serialize test
otherwise memset inside generators_serialize writes outside the bounds of the gens_ser array
1 parent a978d16 commit 94b1ff7

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/modules/bulletproofs/tests_impl.h

+10-4
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,18 @@ static void test_bulletproofs_generators_api(void) {
4444
CHECK(!secp256k1_bulletproofs_generators_serialize(none, gens, gens_ser, &len));
4545
len = sizeof(gens_ser) - 1;
4646
CHECK(!secp256k1_bulletproofs_generators_serialize(none, gens, gens_ser, &len));
47-
len = sizeof(gens_ser) + 1; /* len can be greater than minimum needed */
48-
CHECK(secp256k1_bulletproofs_generators_serialize(none, gens, gens_ser, &len));
49-
CHECK(len == sizeof(gens_ser));
50-
CHECK(ecount == 3);
47+
len = sizeof(gens_ser);
48+
{
49+
/* Output buffer can be greater than minimum needed */
50+
unsigned char gens_ser_tmp[331];
51+
size_t len_tmp = sizeof(gens_ser_tmp);
52+
CHECK(secp256k1_bulletproofs_generators_serialize(none, gens, gens_ser_tmp, &len_tmp));
53+
CHECK(len_tmp == sizeof(gens_ser_tmp) - 1);
54+
CHECK(ecount == 3);
55+
}
5156

5257
/* Parse */
58+
CHECK(secp256k1_bulletproofs_generators_serialize(none, gens, gens_ser, &len));
5359
ecount = 0;
5460
gens = secp256k1_bulletproofs_generators_parse(none, NULL, sizeof(gens_ser));
5561
CHECK(gens == NULL && ecount == 1);

0 commit comments

Comments
 (0)