Fix the BIO_addr test
The BIO_addr test is failing on non-stop. The length of the data is larger than the size we have allocated for it. We dynamically allocate instead. Fixes #22218 Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22294)
This commit is contained in:
parent
50b3c47b65
commit
581c87b088
@ -80,8 +80,9 @@ static BIO_ADDR *make_dummy_addr(int family)
|
|||||||
|
|
||||||
static int bio_addr_is_eq(const BIO_ADDR *a, const BIO_ADDR *b)
|
static int bio_addr_is_eq(const BIO_ADDR *a, const BIO_ADDR *b)
|
||||||
{
|
{
|
||||||
struct sockaddr_storage adata, bdata;
|
unsigned char *adata = NULL, *bdata = NULL;
|
||||||
size_t alen, blen;
|
size_t alen, blen;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
/* True even if a and b are NULL */
|
/* True even if a and b are NULL */
|
||||||
if (a == b)
|
if (a == b)
|
||||||
@ -98,15 +99,11 @@ static int bio_addr_is_eq(const BIO_ADDR *a, const BIO_ADDR *b)
|
|||||||
if (BIO_ADDR_rawport(a) != BIO_ADDR_rawport(b))
|
if (BIO_ADDR_rawport(a) != BIO_ADDR_rawport(b))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!BIO_ADDR_rawaddress(a, NULL, &alen)
|
if (!BIO_ADDR_rawaddress(a, NULL, &alen))
|
||||||
|| alen > sizeof(adata)
|
|
||||||
|| !BIO_ADDR_rawaddress(a, &adata, &alen))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!BIO_ADDR_rawaddress(a, NULL, &blen)
|
if (!BIO_ADDR_rawaddress(b, NULL, &blen))
|
||||||
|| blen > sizeof(bdata)
|
goto err;
|
||||||
|| !BIO_ADDR_rawaddress(a, &bdata, &blen))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (alen != blen)
|
if (alen != blen)
|
||||||
return 0;
|
return 0;
|
||||||
@ -114,7 +111,22 @@ static int bio_addr_is_eq(const BIO_ADDR *a, const BIO_ADDR *b)
|
|||||||
if (alen == 0)
|
if (alen == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return memcmp(&adata, &bdata, alen) == 0;
|
adata = OPENSSL_malloc(alen);
|
||||||
|
if (!TEST_ptr(adata)
|
||||||
|
|| !BIO_ADDR_rawaddress(a, adata, &alen))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
bdata = OPENSSL_malloc(blen);
|
||||||
|
if (!TEST_ptr(bdata)
|
||||||
|
|| !BIO_ADDR_rawaddress(b, bdata, &blen))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
ret = (memcmp(adata, bdata, alen) == 0);
|
||||||
|
|
||||||
|
err:
|
||||||
|
OPENSSL_free(adata);
|
||||||
|
OPENSSL_free(bdata);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int test_bio_addr_copy_dup(int idx)
|
static int test_bio_addr_copy_dup(int idx)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user