mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
peer review: add explanatory comment for printf() macro in test.c; rearrange test.h to avoid awkward forward declaration and add some topical grouping.
This commit is contained in:
@ -204,6 +204,11 @@
|
|||||||
#undef printf
|
#undef printf
|
||||||
#define printf XPRINTF
|
#define printf XPRINTF
|
||||||
#elif !defined(printf)
|
#elif !defined(printf)
|
||||||
|
/* arrange for printf() to flush after every message -- this assures
|
||||||
|
* redirected output (to a log file) records progress right up to the
|
||||||
|
* moment of a crash/abort(); otherwise anything queued in stdout would
|
||||||
|
* be lost.
|
||||||
|
*/
|
||||||
#define printf(...) ( printf(__VA_ARGS__), fflush(stdout) )
|
#define printf(...) ( printf(__VA_ARGS__), fflush(stdout) )
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
200
wolfssl/test.h
200
wolfssl/test.h
@ -303,14 +303,94 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef TEST_IPV6
|
#ifndef MY_EX_USAGE
|
||||||
typedef struct sockaddr_in6 SOCKADDR_IN_T;
|
#define MY_EX_USAGE 2
|
||||||
#define AF_INET_V AF_INET6
|
|
||||||
#else
|
|
||||||
typedef struct sockaddr_in SOCKADDR_IN_T;
|
|
||||||
#define AF_INET_V AF_INET
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef EXIT_FAILURE
|
||||||
|
#define EXIT_FAILURE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
||||||
|
#ifndef EXIT_SUCCESS
|
||||||
|
#define EXIT_SUCCESS 0
|
||||||
|
#endif
|
||||||
|
#define XEXIT(rc) return rc
|
||||||
|
#define XEXIT_T(rc) return (THREAD_RETURN)rc
|
||||||
|
#else
|
||||||
|
#define XEXIT(rc) exit((int)(rc))
|
||||||
|
#define XEXIT_T(rc) exit((int)(rc))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static WC_INLINE
|
||||||
|
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
||||||
|
THREAD_RETURN
|
||||||
|
#else
|
||||||
|
WC_NORETURN void
|
||||||
|
#endif
|
||||||
|
err_sys(const char* msg)
|
||||||
|
{
|
||||||
|
#if !defined(__GNUC__)
|
||||||
|
/* scan-build (which pretends to be gnuc) can get confused and think the
|
||||||
|
* msg pointer can be null even when hardcoded and then it won't exit,
|
||||||
|
* making null pointer checks above the err_sys() call useless.
|
||||||
|
* We could just always exit() but some compilers will complain about no
|
||||||
|
* possible return, with gcc we know the attribute to handle that with
|
||||||
|
* WC_NORETURN. */
|
||||||
|
if (msg)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
fprintf(stderr, "wolfSSL error: %s\n", msg);
|
||||||
|
}
|
||||||
|
XEXIT_T(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static WC_INLINE
|
||||||
|
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
||||||
|
THREAD_RETURN
|
||||||
|
#else
|
||||||
|
WC_NORETURN void
|
||||||
|
#endif
|
||||||
|
err_sys_with_errno(const char* msg)
|
||||||
|
{
|
||||||
|
#if !defined(__GNUC__)
|
||||||
|
/* scan-build (which pretends to be gnuc) can get confused and think the
|
||||||
|
* msg pointer can be null even when hardcoded and then it won't exit,
|
||||||
|
* making null pointer checks above the err_sys() call useless.
|
||||||
|
* We could just always exit() but some compilers will complain about no
|
||||||
|
* possible return, with gcc we know the attribute to handle that with
|
||||||
|
* WC_NORETURN. */
|
||||||
|
if (msg)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#if defined(HAVE_STRING_H) && defined(HAVE_ERRNO_H)
|
||||||
|
fprintf(stderr, "wolfSSL error: %s: %s\n", msg, strerror(errno));
|
||||||
|
#else
|
||||||
|
fprintf(stderr, "wolfSSL error: %s\n", msg);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
XEXIT_T(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LIBCALL_CHECK_RET(...) do { \
|
||||||
|
int _libcall_ret = (__VA_ARGS__); \
|
||||||
|
if (_libcall_ret < 0) { \
|
||||||
|
fprintf(stderr, "%s L%d error %d for \"%s\"\n", \
|
||||||
|
__FILE__, __LINE__, errno, #__VA_ARGS__); \
|
||||||
|
err_sys("library/system call failed"); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define PTHREAD_CHECK_RET(...) do { \
|
||||||
|
int _pthread_ret = (__VA_ARGS__); \
|
||||||
|
if (_pthread_ret != 0) { \
|
||||||
|
errno = _pthread_ret; \
|
||||||
|
fprintf(stderr, "%s L%d error %d for \"%s\"\n", \
|
||||||
|
__FILE__, __LINE__, _pthread_ret, #__VA_ARGS__); \
|
||||||
|
err_sys("pthread call failed"); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
|
||||||
#ifndef WOLFSSL_NO_TLS12
|
#ifndef WOLFSSL_NO_TLS12
|
||||||
#define SERVER_DEFAULT_VERSION 3
|
#define SERVER_DEFAULT_VERSION 3
|
||||||
@ -459,6 +539,15 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef TEST_IPV6
|
||||||
|
typedef struct sockaddr_in6 SOCKADDR_IN_T;
|
||||||
|
#define AF_INET_V AF_INET6
|
||||||
|
#else
|
||||||
|
typedef struct sockaddr_in SOCKADDR_IN_T;
|
||||||
|
#define AF_INET_V AF_INET
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct tcp_ready {
|
typedef struct tcp_ready {
|
||||||
word16 ready; /* predicate */
|
word16 ready; /* predicate */
|
||||||
word16 port;
|
word16 port;
|
||||||
@ -472,33 +561,6 @@ typedef struct tcp_ready {
|
|||||||
#endif
|
#endif
|
||||||
} tcp_ready;
|
} tcp_ready;
|
||||||
|
|
||||||
static WC_INLINE
|
|
||||||
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
|
||||||
THREAD_RETURN
|
|
||||||
#else
|
|
||||||
WC_NORETURN void
|
|
||||||
#endif
|
|
||||||
err_sys(const char* msg);
|
|
||||||
|
|
||||||
#define LIBCALL_CHECK_RET(...) do { \
|
|
||||||
int _libcall_ret = (__VA_ARGS__); \
|
|
||||||
if (_libcall_ret < 0) { \
|
|
||||||
fprintf(stderr, "%s L%d error %d for \"%s\"\n", \
|
|
||||||
__FILE__, __LINE__, errno, #__VA_ARGS__); \
|
|
||||||
err_sys("library/system call failed"); \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#define PTHREAD_CHECK_RET(...) do { \
|
|
||||||
int _pthread_ret = (__VA_ARGS__); \
|
|
||||||
if (_pthread_ret != 0) { \
|
|
||||||
errno = _pthread_ret; \
|
|
||||||
fprintf(stderr, "%s L%d error %d for \"%s\"\n", \
|
|
||||||
__FILE__, __LINE__, _pthread_ret, #__VA_ARGS__); \
|
|
||||||
err_sys("pthread call failed"); \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
static WC_INLINE void InitTcpReady(tcp_ready* ready)
|
static WC_INLINE void InitTcpReady(tcp_ready* ready)
|
||||||
{
|
{
|
||||||
ready->ready = 0;
|
ready->ready = 0;
|
||||||
@ -603,78 +665,6 @@ void join_thread(THREAD_TYPE thread);
|
|||||||
static const word16 wolfSSLPort = 11111;
|
static const word16 wolfSSLPort = 11111;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef MY_EX_USAGE
|
|
||||||
#define MY_EX_USAGE 2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef EXIT_FAILURE
|
|
||||||
#define EXIT_FAILURE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
|
||||||
#ifndef EXIT_SUCCESS
|
|
||||||
#define EXIT_SUCCESS 0
|
|
||||||
#endif
|
|
||||||
#define XEXIT(rc) return rc
|
|
||||||
#define XEXIT_T(rc) return (THREAD_RETURN)rc
|
|
||||||
#else
|
|
||||||
#define XEXIT(rc) exit((int)(rc))
|
|
||||||
#define XEXIT_T(rc) exit((int)(rc))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static WC_INLINE
|
|
||||||
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
|
||||||
THREAD_RETURN
|
|
||||||
#else
|
|
||||||
WC_NORETURN void
|
|
||||||
#endif
|
|
||||||
err_sys(const char* msg)
|
|
||||||
{
|
|
||||||
#if !defined(__GNUC__)
|
|
||||||
/* scan-build (which pretends to be gnuc) can get confused and think the
|
|
||||||
* msg pointer can be null even when hardcoded and then it won't exit,
|
|
||||||
* making null pointer checks above the err_sys() call useless.
|
|
||||||
* We could just always exit() but some compilers will complain about no
|
|
||||||
* possible return, with gcc we know the attribute to handle that with
|
|
||||||
* WC_NORETURN. */
|
|
||||||
if (msg)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
fprintf(stderr, "wolfSSL error: %s\n", msg);
|
|
||||||
}
|
|
||||||
XEXIT_T(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static WC_INLINE
|
|
||||||
#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR)
|
|
||||||
THREAD_RETURN
|
|
||||||
#else
|
|
||||||
WC_NORETURN void
|
|
||||||
#endif
|
|
||||||
err_sys_with_errno(const char* msg)
|
|
||||||
{
|
|
||||||
#if !defined(__GNUC__)
|
|
||||||
/* scan-build (which pretends to be gnuc) can get confused and think the
|
|
||||||
* msg pointer can be null even when hardcoded and then it won't exit,
|
|
||||||
* making null pointer checks above the err_sys() call useless.
|
|
||||||
* We could just always exit() but some compilers will complain about no
|
|
||||||
* possible return, with gcc we know the attribute to handle that with
|
|
||||||
* WC_NORETURN. */
|
|
||||||
if (msg)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if defined(HAVE_STRING_H) && defined(HAVE_ERRNO_H)
|
|
||||||
fprintf(stderr, "wolfSSL error: %s: %s\n", msg, strerror(errno));
|
|
||||||
#else
|
|
||||||
fprintf(stderr, "wolfSSL error: %s\n", msg);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
XEXIT_T(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
extern int myoptind;
|
extern int myoptind;
|
||||||
extern char* myoptarg;
|
extern char* myoptarg;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user