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>
This commit is contained in:
Gilles Peskine 2024-02-20 11:49:54 +01:00
parent dc5597b3dd
commit e7a7013910
2 changed files with 0 additions and 9 deletions

View file

@ -239,13 +239,6 @@ struct psa_key_generation_method_s {
*/
#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);

View file

@ -9996,12 +9996,10 @@ exit:
/* 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);
}