diff --git a/ChangeLog b/ChangeLog index d8d67982aa..284cd4855f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -29,6 +29,11 @@ Security unless you allow third parties to pick trust CAs for client auth. Found by Guido Vranken, Intelworks. +Bugfix + * Fix compile error in net.c with musl libc. Found and patch provided by + zhasha (#278). + * Fix macroization of 'inline' keywork when building as C++. (#279) + Changes * Added checking of hostname length in ssl_set_hostname() to ensure domain names are compliant with RFC 1035. diff --git a/include/polarssl/cipher.h b/include/polarssl/cipher.h index 00c42c1d4d..bde1d4706c 100644 --- a/include/polarssl/cipher.h +++ b/include/polarssl/cipher.h @@ -47,13 +47,10 @@ #define POLARSSL_CIPHER_MODE_STREAM #endif -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /*_MSC_VER */ +#endif #define POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 /**< The selected feature is not available. */ #define POLARSSL_ERR_CIPHER_BAD_INPUT_DATA -0x6100 /**< Bad input parameters to function. */ diff --git a/include/polarssl/compat-1.2.h b/include/polarssl/compat-1.2.h index d694015e4b..37df5412f6 100644 --- a/include/polarssl/compat-1.2.h +++ b/include/polarssl/compat-1.2.h @@ -41,13 +41,10 @@ // Comment out to disable prototype change warnings #define SHOW_PROTOTYPE_CHANGE_WARNINGS -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /* _MSC_VER */ +#endif #if defined(_MSC_VER) // MSVC does not support #warning diff --git a/include/polarssl/config.h b/include/polarssl/config.h index 422c8be95a..21aa9fa6ab 100644 --- a/include/polarssl/config.h +++ b/include/polarssl/config.h @@ -1157,6 +1157,8 @@ * If set, the X509 parser will not break-off when parsing an X509 certificate * and encountering an unknown critical extension. * + * \warning Depending on your PKI use, enabling this can be a security risk! + * * Uncomment to prevent an error. */ //#define POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION diff --git a/include/polarssl/md.h b/include/polarssl/md.h index 303aee8209..fc7482a4b4 100644 --- a/include/polarssl/md.h +++ b/include/polarssl/md.h @@ -28,13 +28,10 @@ #include -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /*_MSC_VER */ +#endif #define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE -0x5080 /**< The selected feature is not available. */ #define POLARSSL_ERR_MD_BAD_INPUT_DATA -0x5100 /**< Bad input parameters to function. */ diff --git a/include/polarssl/pkcs11.h b/include/polarssl/pkcs11.h index 18c3370fce..4ca4a4cdf8 100644 --- a/include/polarssl/pkcs11.h +++ b/include/polarssl/pkcs11.h @@ -38,13 +38,10 @@ #include -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /*_MSC_VER */ +#endif #ifdef __cplusplus extern "C" { diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h index 0d8466385d..c7cd541cff 100644 --- a/include/polarssl/ssl.h +++ b/include/polarssl/ssl.h @@ -97,13 +97,10 @@ #define POLARSSL_KEY_EXCHANGE__SOME__ECDHE_ENABLED #endif -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /*_MSC_VER */ +#endif /* * SSL Error codes diff --git a/library/ecp.c b/library/ecp.c index adef09ea87..796452bafa 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -68,13 +68,10 @@ #define strcasecmp _stricmp #endif -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /*_MSC_VER */ +#endif /* Implementation that should never be optimized out by the compiler */ static void polarssl_zeroize( void *v, size_t n ) { diff --git a/library/ecp_curves.c b/library/ecp_curves.c index 3786356c3e..f5afe44b5a 100644 --- a/library/ecp_curves.c +++ b/library/ecp_curves.c @@ -32,13 +32,10 @@ #include -#if defined(_MSC_VER) && !defined(inline) -#define inline _inline -#else -#if defined(__ARMCC_VERSION) && !defined(inline) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) #define inline __inline -#endif /* __ARMCC_VERSION */ -#endif /*_MSC_VER */ +#endif /* * Conversion macros for embedded constants: diff --git a/library/net.c b/library/net.c index 1fb68842e3..dcbe480e29 100644 --- a/library/net.c +++ b/library/net.c @@ -428,7 +428,7 @@ int net_accept( int bind_fd, int *client_fd, void *client_ip ) #endif #if defined(__socklen_t_defined) || defined(_SOCKLEN_T) || \ - defined(_SOCKLEN_T_DECLARED) + defined(_SOCKLEN_T_DECLARED) || defined(__DEFINED_socklen_t) socklen_t n = (socklen_t) sizeof( client_addr ); #else int n = (int) sizeof( client_addr );