From f044cd05a1d28c998731108dfcd25ba580cdda07 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 19 Apr 2017 13:06:08 +0200 Subject: [PATCH] Avoid using BIO streams in bioprinttest.c Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/3243) --- test/bioprinttest.c | 60 +++++++++++++++++++++++++++++++++++++++++++++ test/testutil.h | 6 +++++ 2 files changed, 66 insertions(+) diff --git a/test/bioprinttest.c b/test/bioprinttest.c index 418d6e4c8d..56aa0b0dec 100644 --- a/test/bioprinttest.c +++ b/test/bioprinttest.c @@ -7,8 +7,16 @@ * https://www.openssl.org/source/license.html */ +#define TESTUTIL_NO_size_t_COMPARISON + #include #include +#include +#ifdef OPENSSL_SYS_WINDOWS +# include +#else +# include OPENSSL_UNISTD +#endif #include #include "internal/numbers.h" #include "testutil.h" @@ -245,3 +253,55 @@ int test_main(int argc, char **argv) return run_tests(argv[0]); } + +/* + * Replace testutil output routines. We do this to eliminate possible sources + * of BIO error + */ +void test_open_streams(void) +{ +} + +void test_close_streams(void) +{ +} + +int test_puts_stdout(const char *str) +{ + return write(1, str, strlen(str)); +} + +int test_puts_stderr(const char *str) +{ + return write(2, str, strlen(str)); +} + +static char vprint_buf[10240]; + +int test_vprintf_stdout(const char *fmt, va_list ap) +{ + size_t len = vsnprintf(vprint_buf, sizeof(vprint_buf), fmt, ap); + + if (len >= sizeof(vprint_buf)) + return -1; + return test_puts_stdout(vprint_buf); +} + +int test_vprintf_stderr(const char *fmt, va_list ap) +{ + size_t len = vsnprintf(vprint_buf, sizeof(vprint_buf), fmt, ap); + + if (len >= sizeof(vprint_buf)) + return -1; + return test_puts_stderr(vprint_buf); +} + +int test_flush_stdout(void) +{ + return 0; +} + +int test_flush_stderr(void) +{ + return 0; +} diff --git a/test/testutil.h b/test/testutil.h index d266fd5288..5d96ddd41c 100644 --- a/test/testutil.h +++ b/test/testutil.h @@ -176,7 +176,13 @@ DECLARE_COMPARISONS(char, char) DECLARE_COMPARISONS(unsigned char, uchar) DECLARE_COMPARISONS(long, long) DECLARE_COMPARISONS(unsigned long, ulong) +/* + * Because this comparison uses a printf format specifier that's not + * universally known (yet), we provide an option to not have it declared. + */ +# ifndef TESTUTIL_NO_size_t_COMPARISON DECLARE_COMPARISONS(size_t, size_t) +# endif /* * Pointer comparisons against other pointers and null. -- 2.34.1