Remove use of _Static_assert
authorMatt Caswell <matt@openssl.org>
Wed, 13 Sep 2023 09:31:46 +0000 (10:31 +0100)
committerPauli <pauli@openssl.org>
Thu, 14 Sep 2023 23:20:05 +0000 (09:20 +1000)
We had some use of the C11 _Static_assert feature which can cause some
problems on some platforms. Everywhere we were using it, it is not really
required so remove it.

Fixes #22017

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22091)

include/internal/e_os.h
providers/implementations/kdfs/argon2.c

index d0e903f653ed62044863a84cfc586131d84bc612..d1ed62e890298c679760258431be3ab7b2c0629f 100644 (file)
  * outside; this file e_os.h is not part of the exported interface.
  */
 
-/* ossl_static_assert_type_eq: gcc-only variable type static assertion */
-# if defined(__GNUC__) && !defined(__clang__)
-#  define ossl_static_assert_type_eq(type, x)                                \
-        _Static_assert((__builtin_types_compatible_p(type, __typeof__(x))),  \
-                        #x " type check failed, expected: " #type)
-# else
-#  define ossl_static_assert_type_eq(type, x)
-# endif
-
 # if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI)
 #  define NO_CHMOD
 #  define NO_SYSLOG
index 323b0f3ab6b87c018b2696e940c1a9521bc01c9b..d93381c410440cdee906d8a41d1b8fdcdb2b38a4 100644 (file)
@@ -1185,8 +1185,7 @@ static int kdf_argon2_ctx_set_lanes(KDF_ARGON2 *ctx, uint32_t lanes)
 
 static int kdf_argon2_ctx_set_t_cost(KDF_ARGON2 *ctx, uint32_t t_cost)
 {
-    /* ARGON2_MAX_MEMORY == max m_cost value, skip check, enforce type */
-    ossl_static_assert_type_eq(uint32_t, t_cost);
+    /* ARGON2_MAX_MEMORY == max m_cost value, so skip check  */
 
     if (t_cost < ARGON2_MIN_TIME) {
         ERR_raise_data(ERR_LIB_PROV, PROV_R_INVALID_ITERATION_COUNT,
@@ -1200,8 +1199,7 @@ static int kdf_argon2_ctx_set_t_cost(KDF_ARGON2 *ctx, uint32_t t_cost)
 
 static int kdf_argon2_ctx_set_m_cost(KDF_ARGON2 *ctx, uint32_t m_cost)
 {
-    /* ARGON2_MAX_MEMORY == max m_cost value, skip check, enforce type */
-    ossl_static_assert_type_eq(uint32_t, m_cost);
+    /* ARGON2_MAX_MEMORY == max m_cost value, so skip check */
 
     if (m_cost < ARGON2_MIN_MEMORY) {
         ERR_raise_data(ERR_LIB_PROV, PROV_R_INVALID_MEMORY_SIZE, "min: %u",
@@ -1218,11 +1216,8 @@ static int kdf_argon2_ctx_set_out_length(KDF_ARGON2 *ctx, uint32_t outlen)
     /*
      * ARGON2_MAX_OUT_LENGTH == max outlen value, so upper bounds checks
      * are always satisfied; to suppress compiler if statement tautology
-     * warnings, these checks are skipped; however, to ensure that these
-     * limits are met and implementation conforming to Argon2 RFC, we need
-     * to fix the type
+     * warnings, these checks are skipped.
      */
-    ossl_static_assert_type_eq(uint32_t, outlen);
 
     if (outlen < ARGON2_MIN_OUT_LENGTH) {
         ERR_raise_data(ERR_LIB_PROV, PROV_R_INVALID_OUTPUT_LENGTH, "min: %u",