From a08ab1fc7a4e15853df2b41f7b0b827b70979da3 Mon Sep 17 00:00:00 2001 From: Takashi Kojo Date: Sat, 16 Nov 2019 07:30:20 +0900 Subject: [PATCH 1/4] fix mnGW error --- IDE/WIN/user_settings.h | 1 + examples/benchmark/tls_bench.c | 26 +++++++++++++------------- wolfssl/wolfcrypt/types.h | 4 +++- 3 files changed, 17 insertions(+), 14 deletions(-) mode change 100644 => 100755 examples/benchmark/tls_bench.c mode change 100644 => 100755 wolfssl/wolfcrypt/types.h diff --git a/IDE/WIN/user_settings.h b/IDE/WIN/user_settings.h index f2071520f..6625488a7 100755 --- a/IDE/WIN/user_settings.h +++ b/IDE/WIN/user_settings.h @@ -25,6 +25,7 @@ #else /* Enables blinding mode, to prevent timing attacks */ #define WC_RSA_BLINDING +#define NO_MULTIBYTE_PRINT #if defined(WOLFSSL_LIB) /* The lib */ diff --git a/examples/benchmark/tls_bench.c b/examples/benchmark/tls_bench.c old mode 100644 new mode 100755 index 6f446e0f2..3b612a456 --- a/examples/benchmark/tls_bench.c +++ b/examples/benchmark/tls_bench.c @@ -447,18 +447,18 @@ static int SocketRecv(int sockFd, char* buf, int sz) int recvd = (int)recv(sockFd, buf, sz, 0); if (recvd == -1) { switch (errno) { - #if EAGAIN != EWOULDBLOCK + #if EAGAIN != SOCKET_EWOULDBLOCK case EAGAIN: /* EAGAIN == EWOULDBLOCK on some systems, but not others */ #endif - case EWOULDBLOCK: + case SOCKET_EWOULDBLOCK: return WOLFSSL_CBIO_ERR_WANT_READ; - case ECONNRESET: + case SOCKET_ECONNRESET: return WOLFSSL_CBIO_ERR_CONN_RST; - case EINTR: + case SOCKET_EINTR: return WOLFSSL_CBIO_ERR_ISR; - case ECONNREFUSED: /* DTLS case */ + case SOCKET_ECONNREFUSED: /* DTLS case */ return WOLFSSL_CBIO_ERR_WANT_READ; - case ECONNABORTED: + case SOCKET_ECONNABORTED: return WOLFSSL_CBIO_ERR_CONN_CLOSE; default: return WOLFSSL_CBIO_ERR_GENERAL; @@ -475,16 +475,16 @@ static int SocketSend(int sockFd, char* buf, int sz) int sent = (int)send(sockFd, buf, sz, 0); if (sent == -1) { switch (errno) { - #if EAGAIN != EWOULDBLOCK + #if EAGAIN != SOCKET_EWOULDBLOCK case EAGAIN: /* EAGAIN == EWOULDBLOCK on some systems, but not others */ #endif - case EWOULDBLOCK: + case SOCKET_EWOULDBLOCK: return WOLFSSL_CBIO_ERR_WANT_READ; - case ECONNRESET: + case SOCKET_ECONNRESET: return WOLFSSL_CBIO_ERR_CONN_RST; - case EINTR: + case SOCKET_EINTR: return WOLFSSL_CBIO_ERR_ISR; - case EPIPE: + case SOCKET_EPIPE: return WOLFSSL_CBIO_ERR_CONN_CLOSE; default: return WOLFSSL_CBIO_ERR_GENERAL; @@ -873,7 +873,7 @@ static void* client_thread(void* args) static int SetupSocketAndListen(int* listenFd, word32 port) { struct sockaddr_in servAddr; - int optval = 1; + const char optval = 1; /* Setup server address */ XMEMSET(&servAddr, 0, sizeof(servAddr)); @@ -923,7 +923,7 @@ static int SocketWaitClient(info_t* info) socklen_t size = sizeof(clientAddr); if ((connd = accept(info->listenFd, (struct sockaddr*)&clientAddr, &size)) == -1) { - if (errno == EWOULDBLOCK) + if (errno == SOCKET_EWOULDBLOCK) return -2; printf("ERROR: failed to accept the connection\n"); return -1; diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h old mode 100644 new mode 100755 index 299b4c628..99c615233 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -500,7 +500,9 @@ } #define XSNPRINTF xsnprintf #endif /* (_MSC_VER >= 1900) */ - #endif /* _MSC_VER || __CYGWIN__ || __MINGW32__ */ + #else + #define XSNPRINTF snprintf + #endif /* _MSC_VER */ #endif /* USE_WINDOWS_API */ #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) \ From 23427085aff55bf033cc0d7bc7fb4b47aec96cfa Mon Sep 17 00:00:00 2001 From: John Safranek Date: Mon, 20 Jan 2020 12:26:04 -0800 Subject: [PATCH 2/4] 1. Add an indent to a new line in user settings. 2. Remove the execute bit from the changed files. --- IDE/WIN/user_settings.h | 2 +- examples/benchmark/tls_bench.c | 0 wolfssl/wolfcrypt/types.h | 0 3 files changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 IDE/WIN/user_settings.h mode change 100755 => 100644 examples/benchmark/tls_bench.c mode change 100755 => 100644 wolfssl/wolfcrypt/types.h diff --git a/IDE/WIN/user_settings.h b/IDE/WIN/user_settings.h old mode 100755 new mode 100644 index 6625488a7..406003ed1 --- a/IDE/WIN/user_settings.h +++ b/IDE/WIN/user_settings.h @@ -25,7 +25,7 @@ #else /* Enables blinding mode, to prevent timing attacks */ #define WC_RSA_BLINDING -#define NO_MULTIBYTE_PRINT + #define NO_MULTIBYTE_PRINT #if defined(WOLFSSL_LIB) /* The lib */ diff --git a/examples/benchmark/tls_bench.c b/examples/benchmark/tls_bench.c old mode 100755 new mode 100644 diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h old mode 100755 new mode 100644 From aabdec214ef28ec7838c6f839a4a14150d476d09 Mon Sep 17 00:00:00 2001 From: John Safranek Date: Tue, 21 Jan 2020 10:53:19 -0800 Subject: [PATCH 3/4] MinGW uses the Win32 setsockopt() function which uses a char for SO_REUSEADDR's option. Everything else uses an int. --- examples/benchmark/tls_bench.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/benchmark/tls_bench.c b/examples/benchmark/tls_bench.c index 3b612a456..382776c1a 100644 --- a/examples/benchmark/tls_bench.c +++ b/examples/benchmark/tls_bench.c @@ -873,7 +873,11 @@ static void* client_thread(void* args) static int SetupSocketAndListen(int* listenFd, word32 port) { struct sockaddr_in servAddr; - const char optval = 1; +#if defined(_MSC_VER) || defined(__MINGW32__) + char optval = 1; +#else + int optval = 1; +#endif /* Setup server address */ XMEMSET(&servAddr, 0, sizeof(servAddr)); @@ -890,7 +894,8 @@ static int SetupSocketAndListen(int* listenFd, word32 port) } /* allow reuse */ - if (setsockopt(*listenFd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) { + if (setsockopt(*listenFd, SOL_SOCKET, SO_REUSEADDR, + &optval, sizeof(optval)) == -1) { printf("setsockopt SO_REUSEADDR failed\n"); return -1; } From 37cad6e9bafd53ef7d9f4baa72b8f1ecb056e552 Mon Sep 17 00:00:00 2001 From: Takashi Kojo Date: Wed, 22 Jan 2020 08:12:51 +0900 Subject: [PATCH 4/4] %zu, pragma: not supported, --- examples/client/client.c | 4 ++++ examples/server/server.c | 4 ++++ wolfssl/wolfcrypt/types.h | 2 ++ 3 files changed, 10 insertions(+) diff --git a/examples/client/client.c b/examples/client/client.c index 8940b445e..85d082574 100644 --- a/examples/client/client.c +++ b/examples/client/client.c @@ -631,7 +631,11 @@ static int ClientBenchmarkThroughput(WOLFSSL_CTX* ctx, char* host, word16 port, wolfSSL_free(ssl); ssl = NULL; CloseSocket(sockfd); +#if !defined(__MINGW32__) printf("wolfSSL Client Benchmark %zu bytes\n" +#else + printf("wolfSSL Client Benchmark %d bytes\n" +#endif "\tConnect %8.3f ms\n" "\tTX %8.3f ms (%8.3f MBps)\n" "\tRX %8.3f ms (%8.3f MBps)\n", diff --git a/examples/server/server.c b/examples/server/server.c index 1c314c50a..3f1129184 100644 --- a/examples/server/server.c +++ b/examples/server/server.c @@ -417,7 +417,11 @@ int ServerEchoData(SSL* ssl, int clientfd, int echoData, int block, free(buffer); if (throughput) { + #if !defined(__MINGW32__) printf("wolfSSL Server Benchmark %zu bytes\n" + #else + printf("wolfSSL Server Benchmark %d bytes\n" + #endif "\tRX %8.3f ms (%8.3f MBps)\n" "\tTX %8.3f ms (%8.3f MBps)\n", throughput, diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 99c615233..08553b4b1 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -483,7 +483,9 @@ #else /* 4996 warning to use MS extensions e.g., _sprintf_s instead of _snprintf */ + #if !defined(__MINGW32__) #pragma warning(disable: 4996) + #endif static WC_INLINE int xsnprintf(char *buffer, size_t bufsize, const char *format, ...) {