Remove initialization function for variable-length struct
Assigning the return value of a function that returns a struct with a
flexible array member does not fill the flexible array member, which leaves
a gap in the initialization that could be surprising to programmers. Also,
this is a borderline case in ABI design which could cause interoperability
problems. So remove this function.
This gets rid of an annoying note from GCC about ABI compatibility on
(at least) x86_64.
```
In file included from include/psa/crypto.h:4820,
from <stdin>:1:
include/psa/crypto_struct.h: In function ‘psa_key_generation_method_init’:
include/psa/crypto_struct.h:244:1: note: the ABI of passing struct with a flexible array member has changed in GCC 4.4
244 | {
| ^
```
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
diff --git a/include/psa/crypto_struct.h b/include/psa/crypto_struct.h
index 248caa2..f41bc83 100644
--- a/include/psa/crypto_struct.h
+++ b/include/psa/crypto_struct.h
@@ -239,13 +239,6 @@
*/
#define PSA_KEY_GENERATION_METHOD_INIT { 0 }
-static inline struct psa_key_generation_method_s psa_key_generation_method_init(
- void)
-{
- const struct psa_key_generation_method_s v = PSA_KEY_GENERATION_METHOD_INIT;
- return v;
-}
-
struct psa_key_policy_s {
psa_key_usage_t MBEDTLS_PRIVATE(usage);
psa_algorithm_t MBEDTLS_PRIVATE(alg);
diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function
index e946f4e..6cd1e93 100644
--- a/tests/suites/test_suite_psa_crypto.function
+++ b/tests/suites/test_suite_psa_crypto.function
@@ -9996,12 +9996,10 @@
/* BEGIN_CASE */
void key_generation_method_init()
{
- psa_key_generation_method_t func = psa_key_generation_method_init();
psa_key_generation_method_t init = PSA_KEY_GENERATION_METHOD_INIT;
psa_key_generation_method_t zero;
memset(&zero, 0, sizeof(zero));
- TEST_EQUAL(func.flags, 0);
TEST_EQUAL(init.flags, 0);
TEST_EQUAL(zero.flags, 0);
}