Fix a failure in bio_dgram_test on the NonStop platform

The size of the datagram header is significantly larger that we might
expect on NonStop (probably driven by sizeof(BIO_ADDR)). We adjust the
size of the default buffer to take into account the header size and the
mtu.

Fixes #22013

Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22058)
This commit is contained in:
Matt Caswell 2023-09-11 10:03:22 +01:00
parent 122d4e20cd
commit 572f290c9c
2 changed files with 7 additions and 3 deletions

View File

@ -279,8 +279,9 @@ static int dgram_pair_init(BIO *bio)
if (b == NULL)
return 0;
b->req_buf_len = 17*1024; /* default buffer size */
b->mtu = 1472; /* conservative default MTU */
/* default buffer size */
b->req_buf_len = 9 * (sizeof(struct dgram_hdr) + b->mtu);
b->lock = CRYPTO_THREAD_lock_new();
if (b->lock == NULL) {

View File

@ -559,8 +559,11 @@ static int test_bio_dgram_pair(int idx)
goto err;
/*
* Should be able to fit at least 9 datagrams in default write buffer size
* in worst case
* The number of datagrams we can fit depends on the size of the default
* write buffer size, the size of the datagram header and the size of the
* payload data we send in each datagram. The max payload data is based on
* the mtu. The default write buffer size is 9 * (sizeof(header) + mtu) so
* we expect at least 9 maximally sized datagrams to fit in the buffer.
*/
if (!TEST_int_ge(i, 9))
goto err;