bppp: check for overflow in generator allocation
This commit is contained in:
@@ -28,6 +28,11 @@ secp256k1_bppp_generators *secp256k1_bppp_generators_create(const secp256k1_cont
|
||||
if (ret == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
/* Ensure that multiplication will not wrap around */
|
||||
if (n > SIZE_MAX / sizeof(*ret->gens)) {
|
||||
free(ret);
|
||||
return NULL;
|
||||
}
|
||||
ret->gens = checked_malloc(&ctx->error_callback, n * sizeof(*ret->gens));
|
||||
if (ret->gens == NULL) {
|
||||
free(ret);
|
||||
|
||||
@@ -28,6 +28,8 @@ static void test_bppp_generators_api(void) {
|
||||
CHECK(gens != NULL);
|
||||
gens_orig = gens; /* Preserve for round-trip test */
|
||||
|
||||
CHECK(secp256k1_bppp_generators_create(CTX, SIZE_MAX / sizeof(secp256k1_ge) + 1) == NULL);
|
||||
|
||||
/* Serialize */
|
||||
CHECK_ILLEGAL(CTX, secp256k1_bppp_generators_serialize(CTX, NULL, gens_ser, &len));
|
||||
CHECK_ILLEGAL(CTX, secp256k1_bppp_generators_serialize(CTX, gens, NULL, &len));
|
||||
|
||||
Reference in New Issue
Block a user