diff --git a/ChangeLog b/ChangeLog index d8d67982a..284cd4855 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 00c42c1d4..bde1d4706 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 d694015e4..37df5412f 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 422c8be95..21aa9fa6a 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 303aee820..fc7482a4b 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 18c3370fc..4ca4a4cdf 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 0d8466385..c7cd541cf 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 adef09ea8..796452baf 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 3786356c3..f5afe44b5 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 1fb68842e..dcbe480e2 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 );