From b73a440205619c16848951faad19cbbb274d55dd Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Tue, 17 Oct 2023 09:16:41 -0600 Subject: [PATCH 1/4] Fix for pthreads on MSYS2 & MINGW --- wolfssl/wolfcrypt/types.h | 3 +-- wolfssl/wolfcrypt/wc_port.h | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index e61267df5..2c18bd69b 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -1377,8 +1377,7 @@ typedef struct w64wrapper { typedef unsigned int THREAD_RETURN; typedef size_t THREAD_TYPE; #define WOLFSSL_THREAD - #elif (defined(_POSIX_THREADS) || defined(HAVE_PTHREAD)) && \ - !defined(__MINGW32__) + #elif (defined(_POSIX_THREADS) || defined(HAVE_PTHREAD)) #ifndef __MACH__ #include typedef struct COND_TYPE { diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index 15e416565..5a91f2f3a 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -60,6 +60,10 @@ /* THREADING/MUTEX SECTION */ #ifdef USE_WINDOWS_API + #if defined(MINGW32) && !defined(SINGLE_THREADED) + #define WOLFSSL_PTHREADS + #include + #endif #ifdef WOLFSSL_GAME_BUILD #include "system/xtl.h" #else @@ -739,10 +743,10 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void); #endif #ifndef MAX_FILENAME_SZ - #define MAX_FILENAME_SZ 256 /* max file name length */ + #define MAX_FILENAME_SZ 260 + 1 /* max file name length */ #endif #ifndef MAX_PATH - #define MAX_PATH 256 + #define MAX_PATH 260 + 1 #endif WOLFSSL_LOCAL int wc_FileLoad(const char* fname, unsigned char** buf, From 5bc2edd5adfccc32577d25ab52b5d23032e2b2dd Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Tue, 17 Oct 2023 09:37:50 -0600 Subject: [PATCH 2/4] Allow override of XSNPRINTF for Windows --- wolfssl/wolfcrypt/types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 2c18bd69b..18d39336f 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -761,8 +761,8 @@ typedef struct w64wrapper { /* snprintf is used in asn.c for GetTimeString, PKCS7 test, and when debugging is turned on */ + #ifndef XSNPRINTF #ifndef USE_WINDOWS_API - #ifndef XSNPRINTF #if defined(WOLFSSL_ESPIDF) && \ (!defined(NO_ASN_TIME) && defined(HAVE_PKCS7)) #include @@ -798,7 +798,6 @@ typedef struct w64wrapper { #include #define XSNPRINTF snprintf #endif - #endif #else #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) #if defined(_MSC_VER) && (_MSC_VER >= 1900) @@ -834,6 +833,7 @@ typedef struct w64wrapper { #define XSNPRINTF snprintf #endif /* _MSC_VER */ #endif /* USE_WINDOWS_API */ + #endif /* !XSNPRINTF */ #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) || \ defined(HAVE_ALPN) || defined(WOLFSSL_SNIFFER) From 286d551ad09ab8c804251082d4f2e848d34f5f09 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Tue, 17 Oct 2023 10:22:17 -0600 Subject: [PATCH 3/4] Use same mingw macro in codebase for consistency --- wolfssl/wolfcrypt/wc_port.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index 5a91f2f3a..a86427dbe 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -60,7 +60,7 @@ /* THREADING/MUTEX SECTION */ #ifdef USE_WINDOWS_API - #if defined(MINGW32) && !defined(SINGLE_THREADED) + #if defined(__MINGW32__) && !defined(SINGLE_THREADED) #define WOLFSSL_PTHREADS #include #endif From a810514f86df66e5defa49f0cee4a7c3dc10db21 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Tue, 17 Oct 2023 11:36:19 -0600 Subject: [PATCH 4/4] Get multi-test passing --- wolfssl/wolfcrypt/wc_port.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index a86427dbe..3ae3e41a7 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -743,10 +743,10 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void); #endif #ifndef MAX_FILENAME_SZ - #define MAX_FILENAME_SZ 260 + 1 /* max file name length */ + #define MAX_FILENAME_SZ (260 + 1) /* max file name length */ #endif #ifndef MAX_PATH - #define MAX_PATH 260 + 1 + #define MAX_PATH (260 + 1) #endif WOLFSSL_LOCAL int wc_FileLoad(const char* fname, unsigned char** buf,