summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2022-02-19 16:00:57 +0000
committerjsing <>2022-02-19 16:00:57 +0000
commitc8d8543ac57e5b46bd0d966b4974a2aae423c990 (patch)
tree2b9ca6378c06dd1a4525e6037cc931ba44b8e0c0 /src
parent442d44388d1decd61ea78c89db2829f9e63c6082 (diff)
downloadopenbsd-c8d8543ac57e5b46bd0d966b4974a2aae423c990.tar.gz
openbsd-c8d8543ac57e5b46bd0d966b4974a2aae423c990.tar.bz2
openbsd-c8d8543ac57e5b46bd0d966b4974a2aae423c990.zip
Add memory BIO small I/O tests.
Diffstat (limited to 'src')
-rw-r--r--src/regress/lib/libcrypto/bio/biotest.c73
1 files changed, 72 insertions, 1 deletions
diff --git a/src/regress/lib/libcrypto/bio/biotest.c b/src/regress/lib/libcrypto/bio/biotest.c
index 442c64e93b..d31e51e454 100644
--- a/src/regress/lib/libcrypto/bio/biotest.c
+++ b/src/regress/lib/libcrypto/bio/biotest.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: biotest.c,v 1.7 2022/02/17 18:51:58 jsing Exp $ */ 1/* $OpenBSD: biotest.c,v 1.8 2022/02/19 16:00:57 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014, 2022 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014, 2022 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -274,6 +274,76 @@ bio_mem_test(void)
274} 274}
275 275
276static int 276static int
277bio_mem_small_io_test(void)
278{
279 uint8_t buf[2];
280 int i, j, ret;
281 BIO *bio;
282 int failed = 1;
283
284 memset(buf, 0xdb, sizeof(buf));
285
286 if ((bio = BIO_new(BIO_s_mem())) == NULL) {
287 fprintf(stderr, "FAIL: BIO_new() returned NULL\n");
288 goto failure;
289 }
290
291 for (i = 0; i < 100; i++) {
292 if (!BIO_reset(bio)) {
293 fprintf(stderr, "FAIL: BIO_reset() failed\n");
294 goto failure;
295 }
296 for (j = 0; j < 25000; j++) {
297 ret = BIO_write(bio, buf, sizeof(buf));
298 if (ret != sizeof(buf)) {
299 fprintf(stderr, "FAIL: BIO_write() = %d, "
300 "want %zu\n", ret, sizeof(buf));
301 goto failure;
302 }
303 }
304 for (j = 0; j < 25000; j++) {
305 ret = BIO_read(bio, buf, sizeof(buf));
306 if (ret != sizeof(buf)) {
307 fprintf(stderr, "FAIL: BIO_read() = %d, "
308 "want %zu\n", ret, sizeof(buf));
309 goto failure;
310 }
311 ret = BIO_write(bio, buf, sizeof(buf));
312 if (ret != sizeof(buf)) {
313 fprintf(stderr, "FAIL: BIO_write() = %d, "
314 "want %zu\n", ret, sizeof(buf));
315 goto failure;
316 }
317 }
318 for (j = 0; j < 25000; j++) {
319 ret = BIO_read(bio, buf, sizeof(buf));
320 if (ret != sizeof(buf)) {
321 fprintf(stderr, "FAIL: BIO_read() = %d, "
322 "want %zu\n", ret, sizeof(buf));
323 goto failure;
324 }
325 }
326 if (!BIO_eof(bio)) {
327 fprintf(stderr, "FAIL: BIO not EOF\n");
328 goto failure;
329 }
330 }
331
332 if (buf[0] != 0xdb || buf[1] != 0xdb) {
333 fprintf(stderr, "FAIL: buf = {0x%x, 0x%x}, want {0xdb, 0xdb}\n",
334 buf[0], buf[1]);
335 goto failure;
336 }
337
338 failed = 0;
339
340 failure:
341 BIO_free(bio);
342
343 return failed;
344}
345
346static int
277bio_mem_readonly_test(void) 347bio_mem_readonly_test(void)
278{ 348{
279 uint8_t *data = NULL; 349 uint8_t *data = NULL;
@@ -389,6 +459,7 @@ do_bio_mem_tests(void)
389 int failed = 0; 459 int failed = 0;
390 460
391 failed |= bio_mem_test(); 461 failed |= bio_mem_test();
462 failed |= bio_mem_small_io_test();
392 failed |= bio_mem_readonly_test(); 463 failed |= bio_mem_readonly_test();
393 464
394 return failed; 465 return failed;