Skip to content

Commit

Permalink
Further fix in bio_dgram_test for BIO_s_dgram_mem()
Browse files Browse the repository at this point in the history
When setting an explicit buffer size using BIO_s_dgram_mem() make sure we
take into account the size of the header (which may be large on NonStop)

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 #22058)
  • Loading branch information
mattcaswell committed Sep 13, 2023
1 parent 572f290 commit 58165d8
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions test/bio_dgram_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <openssl/rand.h>
#include "testutil.h"
#include "internal/sockets.h"
#include "internal/bio_addr.h"

#if !defined(OPENSSL_NO_DGRAM) && !defined(OPENSSL_NO_SOCK)

Expand Down Expand Up @@ -519,14 +520,24 @@ static int test_bio_dgram_pair(int idx)
} else {
if (!TEST_ptr(bio1 = bio2 = BIO_new(BIO_s_dgram_mem())))
goto err;
if (idx == 1 && !TEST_true(BIO_set_write_buf_size(bio1, 20 * 1024)))
goto err;
}

mtu1 = BIO_dgram_get_mtu(bio1);
if (!TEST_int_ge(mtu1, 1280))
goto err;

if (idx == 1) {
size_t bufsz;

/*
* Assume the header contains 2 BIO_ADDR structures and a length. We
* set a buffer big enough for 9 full sized datagrams.
*/
bufsz = 9 * (mtu1 + (sizeof(BIO_ADDR) * 2) + sizeof(size_t));
if (!TEST_true(BIO_set_write_buf_size(bio1, bufsz)))
goto err;
}

mtu2 = BIO_dgram_get_mtu(bio2);
if (!TEST_int_ge(mtu2, 1280))
goto err;
Expand Down

0 comments on commit 58165d8

Please sign in to comment.