mirror of
https://github.com/cuberite/polarssl.git
synced 2025-09-12 16:45:16 -04:00
MBEDTLS_STATIC_ASSERT: make it work outside of a function
At the top level, the macro would have had to be used without a following semicolon (except with permissive compilers that accept spurious semicolons outside of a function), which is confusing to humans and indenters. Fix that. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
152983bd76
commit
f555a4e26f
@ -337,17 +337,18 @@ static inline const unsigned char *mbedtls_buffer_offset_const(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Always provide a static assert macro, so it can be used unconditionally.
|
/* Always provide a static assert macro, so it can be used unconditionally.
|
||||||
* It will expand to nothing on some systems.
|
* It will expand to nothing on some systems. */
|
||||||
* Can be used outside functions (but don't add a trailing ';' in that case:
|
/* Can't use the C11-style `defined(static_assert)` on FreeBSD, since it
|
||||||
* the semicolon is included here to avoid triggering -Wextra-semi when
|
|
||||||
* MBEDTLS_STATIC_ASSERT() expands to nothing).
|
|
||||||
* Can't use the C11-style `defined(static_assert)` on FreeBSD, since it
|
|
||||||
* defines static_assert even with -std=c99, but then complains about it.
|
* defines static_assert even with -std=c99, but then complains about it.
|
||||||
*/
|
*/
|
||||||
#if defined(static_assert) && !defined(__FreeBSD__)
|
#if defined(static_assert) && !defined(__FreeBSD__)
|
||||||
#define MBEDTLS_STATIC_ASSERT(expr, msg) static_assert(expr, msg);
|
#define MBEDTLS_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
|
||||||
#else
|
#else
|
||||||
#define MBEDTLS_STATIC_ASSERT(expr, msg)
|
/* Make sure `MBEDTLS_STATIC_ASSERT(expr, msg);` is valid both inside and
|
||||||
|
* outside a function. We choose a struct declaration, which can be repeated
|
||||||
|
* any number of times and does not need a matching definition. */
|
||||||
|
#define MBEDTLS_STATIC_ASSERT(expr, msg) \
|
||||||
|
struct ISO_C_does_not_allow_extra_semicolon_outside_of_a_function
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Suppress compiler warnings for unused functions and variables. */
|
/* Suppress compiler warnings for unused functions and variables. */
|
||||||
|
@ -1622,11 +1622,11 @@ exit:
|
|||||||
}
|
}
|
||||||
|
|
||||||
MBEDTLS_STATIC_ASSERT((MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_DUAL_USE) == 0,
|
MBEDTLS_STATIC_ASSERT((MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_DUAL_USE) == 0,
|
||||||
"One or more key attribute flag is listed as both external-only and dual-use")
|
"One or more key attribute flag is listed as both external-only and dual-use");
|
||||||
MBEDTLS_STATIC_ASSERT((PSA_KA_MASK_INTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_DUAL_USE) == 0,
|
MBEDTLS_STATIC_ASSERT((PSA_KA_MASK_INTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_DUAL_USE) == 0,
|
||||||
"One or more key attribute flag is listed as both internal-only and dual-use")
|
"One or more key attribute flag is listed as both internal-only and dual-use");
|
||||||
MBEDTLS_STATIC_ASSERT((PSA_KA_MASK_INTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY) == 0,
|
MBEDTLS_STATIC_ASSERT((PSA_KA_MASK_INTERNAL_ONLY & MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY) == 0,
|
||||||
"One or more key attribute flag is listed as both internal-only and external-only")
|
"One or more key attribute flag is listed as both internal-only and external-only");
|
||||||
|
|
||||||
/** Validate that a key policy is internally well-formed.
|
/** Validate that a key policy is internally well-formed.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user