Skip to content

Commit

Permalink
Avoid memory leak in x509_test error path
Browse files Browse the repository at this point in the history
Fixes #23897

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from #23991)
  • Loading branch information
Viktor Dukhovni authored and t8m committed May 8, 2024
1 parent deaa83a commit 7cbca5a
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions test/v3ext.c
Expand Up @@ -269,17 +269,20 @@ static int test_addr_fam_len(void)
goto end;
if (!ASN1_OCTET_STRING_set(f1->addressFamily, key, keylen))
goto end;

/* Push and transfer memory ownership to stack */
if (!sk_IPAddressFamily_push(addr, f1))
goto end;
f1 = NULL;

/* Shouldn't be able to canonize this as the len is > 3*/
if (!TEST_false(X509v3_addr_canonize(addr)))
goto end;

/* Create a well formed IPAddressFamily */
f1 = sk_IPAddressFamily_pop(addr);
IPAddressFamily_free(f1);
/* Pop and free the new stack element */
IPAddressFamily_free(sk_IPAddressFamily_pop(addr));

/* Create a well-formed IPAddressFamily */
key[0] = (afi >> 8) & 0xFF;
key[1] = afi & 0xFF;
key[2] = 0x1;
Expand All @@ -297,16 +300,22 @@ static int test_addr_fam_len(void)

/* Mark this as inheritance so we skip some of the is_canonize checks */
f1->ipAddressChoice->type = IPAddressChoice_inherit;

/* Push and transfer memory ownership to stack */
if (!sk_IPAddressFamily_push(addr, f1))
goto end;
f1 = NULL;

/* Should be able to canonize now */
if (!TEST_true(X509v3_addr_canonize(addr)))
goto end;

testresult = 1;
end:
/* Free stack and any memory owned by detached element */
IPAddressFamily_free(f1);
sk_IPAddressFamily_pop_free(addr, IPAddressFamily_free);

ASN1_OCTET_STRING_free(ip1);
ASN1_OCTET_STRING_free(ip2);
return testresult;
Expand Down

0 comments on commit 7cbca5a

Please sign in to comment.