diff --git a/IDE/GCC-ARM/Header/user_settings.h b/IDE/GCC-ARM/Header/user_settings.h index 971180c9bd..2ef79b4546 100644 --- a/IDE/GCC-ARM/Header/user_settings.h +++ b/IDE/GCC-ARM/Header/user_settings.h @@ -537,6 +537,9 @@ extern unsigned int my_rng_seed_gen(void); #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/SimplicityStudio/user_settings.h b/IDE/SimplicityStudio/user_settings.h index 70f560357c..e2ea3c91d3 100644 --- a/IDE/SimplicityStudio/user_settings.h +++ b/IDE/SimplicityStudio/user_settings.h @@ -454,6 +454,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/WICED-STUDIO/user_settings.h b/IDE/WICED-STUDIO/user_settings.h index 686dacefee..ac2f94b444 100644 --- a/IDE/WICED-STUDIO/user_settings.h +++ b/IDE/WICED-STUDIO/user_settings.h @@ -531,6 +531,9 @@ extern unsigned int my_rng_seed_gen(void); #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/WINCE/user_settings.h b/IDE/WINCE/user_settings.h index f8a69633c2..8bb10ec2a1 100644 --- a/IDE/WINCE/user_settings.h +++ b/IDE/WINCE/user_settings.h @@ -662,6 +662,9 @@ C149F3285397DFBD0C6720E14818475C3A50B10880EF9619463173A6D5ED15E7 #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/XCODE-FIPSv2/macOS-C++/Intel/user_settings.h b/IDE/XCODE-FIPSv2/macOS-C++/Intel/user_settings.h index 03b8bb81b6..8422deef53 100644 --- a/IDE/XCODE-FIPSv2/macOS-C++/Intel/user_settings.h +++ b/IDE/XCODE-FIPSv2/macOS-C++/Intel/user_settings.h @@ -528,6 +528,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/XCODE-FIPSv2/macOS-C++/M1/user_settings.h b/IDE/XCODE-FIPSv2/macOS-C++/M1/user_settings.h index d4880d52ac..273e2fd8aa 100644 --- a/IDE/XCODE-FIPSv2/macOS-C++/M1/user_settings.h +++ b/IDE/XCODE-FIPSv2/macOS-C++/M1/user_settings.h @@ -539,6 +539,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/XCODE-FIPSv2/user_settings.h b/IDE/XCODE-FIPSv2/user_settings.h index 14dc7ed4ac..733900aed2 100644 --- a/IDE/XCODE-FIPSv2/user_settings.h +++ b/IDE/XCODE-FIPSv2/user_settings.h @@ -540,6 +540,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/XCODE-FIPSv5/user_settings.h b/IDE/XCODE-FIPSv5/user_settings.h index 18e21608ec..65fba97b73 100644 --- a/IDE/XCODE-FIPSv5/user_settings.h +++ b/IDE/XCODE-FIPSv5/user_settings.h @@ -621,6 +621,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/IDE/XCODE-FIPSv6/user_settings.h b/IDE/XCODE-FIPSv6/user_settings.h index fb4aaddd0f..e60f2941d6 100644 --- a/IDE/XCODE-FIPSv6/user_settings.h +++ b/IDE/XCODE-FIPSv6/user_settings.h @@ -681,6 +681,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/examples/configs/user_settings_template.h b/examples/configs/user_settings_template.h index 49a48e9b60..43d8c45746 100644 --- a/examples/configs/user_settings_template.h +++ b/examples/configs/user_settings_template.h @@ -487,6 +487,9 @@ extern "C" { #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) #define XSNPRINTF snprintf + + #include + #define XATOI(s) atoi((s)) #endif diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 7a177b34eb..77d2083cbb 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -1305,7 +1305,6 @@ binding for XSNPRINTF #define XSTRTOK(s1,d,ptr) strtok_r((s1),(d),(ptr)) #endif #endif - #if defined(WOLFSSL_CERT_EXT) || defined(HAVE_OCSP) || \ defined(HAVE_CRL_IO) || defined(HAVE_HTTP_CLIENT) || \ !defined(NO_CRYPT_BENCHMARK) || defined(OPENSSL_EXTRA) @@ -1317,6 +1316,19 @@ binding for XSNPRINTF #endif #endif /* STRING_USER */ +/* The STRING_USER platform templates override the string and memory macros + * but not XATOI, which the certificate policy OID parser and the benchmark + * need. Same features as the case above, so a platform that set STRING_USER + * to keep the standard library out only reaches through one that + * cannot work without XATOI, and one that supplies its own still wins. */ +#if defined(STRING_USER) && !defined(XATOI) && \ + (defined(WOLFSSL_CERT_EXT) || defined(HAVE_OCSP) || \ + defined(HAVE_CRL_IO) || defined(HAVE_HTTP_CLIENT) || \ + !defined(NO_CRYPT_BENCHMARK) || defined(OPENSSL_EXTRA)) + #include + #define XATOI(s) atoi((s)) +#endif + #ifdef WOLFSSL_WIDE_BYTE /* Packed octet stream -> one octet per byte cell. All sizes are in byte cells; * out needs octetSz, in needs WC_PACKED_CELLS(octetSz), and they must not