From 4eb0d32fa82640faa09c5e2a3dad94ba4e1d066c Mon Sep 17 00:00:00 2001 From: John Safranek Date: Fri, 24 Aug 2018 11:21:10 -0700 Subject: [PATCH] Patches 1. Define Timeval in callbacks.h if the file sys/time.h is missing. 2. When picking the correct strtok() function, take into account MINGW64. 3. In the example server, changed the call to SSL_accept_ex() as it doesn't exist. Using wolfSSL_accept_ex(). Only a problem when setting WOLFSSL_CALLBACKS. 4. PickHashSigAlgo() is missing a ; when WOLFSSL_CALLBACKS is set. --- examples/server/server.c | 4 ++-- src/internal.c | 2 +- wolfssl/callbacks.h | 10 +++++++++- wolfssl/wolfcrypt/types.h | 3 ++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/examples/server/server.c b/examples/server/server.c index 1c8c1fcc2..3574dc3e5 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -120,7 +120,7 @@ static int NonBlockingSSL_Accept(SSL* ssl) #ifndef WOLFSSL_CALLBACKS int ret = SSL_accept(ssl); #else - int ret = SSL_accept_ex(ssl, srvHandShakeCB, srvTimeoutCB, srvTo); + int ret = wolfSSL_accept_ex(ssl, srvHandShakeCB, srvTimeoutCB, srvTo); #endif int error = SSL_get_error(ssl, 0); SOCKET_T sockfd = (SOCKET_T)SSL_get_fd(ssl); @@ -163,7 +163,7 @@ static int NonBlockingSSL_Accept(SSL* ssl) #ifndef WOLFSSL_CALLBACKS ret = SSL_accept(ssl); #else - ret = SSL_accept_ex(ssl, + ret = wolfSSL_accept_ex(ssl, srvHandShakeCB, srvTimeoutCB, srvTo); #endif error = SSL_get_error(ssl, 0); diff --git a/src/internal.c b/src/internal.c index 00419981e..1f815b00d 100644 --- a/src/internal.c +++ b/src/internal.c @@ -16346,7 +16346,7 @@ void PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, char* packetName = info->packetNames[info->numberPackets]; XSTRNCPY(packetName, name, MAX_PACKETNAME_SZ); packetName[MAX_PACKETNAME_SZ] = '\0'; - info->numberPackets++ + info->numberPackets++; } #endif (void)ssl; diff --git a/wolfssl/callbacks.h b/wolfssl/callbacks.h index af39a09ab..7af0df5b5 100644 --- a/wolfssl/callbacks.h +++ b/wolfssl/callbacks.h @@ -52,7 +52,15 @@ typedef struct handShakeInfo_st { } HandShakeInfo; -typedef struct timeval Timeval; +#ifdef HAVE_SYS_TIME_H + typedef struct timeval Timeval; +#else /* HAVE_SYS_TIME_H */ + /* Define the Timeval explicitly. */ + typedef struct { + long tv_sec; /* Seconds. */ + long tv_usec; /* Microseconds. */ + } Timeval; +#endif /* HAVE_SYS_TIME_H */ typedef struct packetInfo_st { diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index cecd5b0e5..e044f0dc7 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -315,7 +315,8 @@ #endif #if !defined(USE_WOLF_STRTOK) && \ - (defined(__MINGW32__) || defined(WOLFSSL_TIRTOS) || defined(WOLF_C99)) + ((defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) || \ + defined(WOLFSSL_TIRTOS) || defined(WOLF_C99)) #define USE_WOLF_STRTOK #endif #if !defined(USE_WOLF_STRSEP) && (defined(WOLF_C99))