From 572f290c9c2d892d5f891c6b8dcebf4e1ac65aed Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Mon, 11 Sep 2023 10:03:22 +0100 Subject: [PATCH] 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 Reviewed-by: Tomas Mraz Reviewed-by: Hugo Landau Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/22058) --- crypto/bio/bss_dgram_pair.c | 3 ++- test/bio_dgram_test.c | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/crypto/bio/bss_dgram_pair.c b/crypto/bio/bss_dgram_pair.c index 534a2216aa4..08dd802d8fd 100644 --- a/crypto/bio/bss_dgram_pair.c +++ b/crypto/bio/bss_dgram_pair.c @@ -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) { diff --git a/test/bio_dgram_test.c b/test/bio_dgram_test.c index f6c3e30c149..70157493f97 100644 --- a/test/bio_dgram_test.c +++ b/test/bio_dgram_test.c @@ -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; -- 2.47.2