Clang does not initialize padding in union members so hashing the
complete "arg" union could lead to different hashes if the hashed
plugin_feature_t does not have static storage duration.
Fixes #549.
data = chunk_empty;
break;
case FEATURE_CRYPTER:
data = chunk_empty;
break;
case FEATURE_CRYPTER:
+ data = chunk_from_thing(feature->arg.crypter);
+ break;
+ data = chunk_from_thing(feature->arg.aead);
+ break;
+ data = chunk_from_thing(feature->arg.signer);
+ break;
+ data = chunk_from_thing(feature->arg.hasher);
+ break;
+ data = chunk_from_thing(feature->arg.prf);
+ break;
+ data = chunk_from_thing(feature->arg.dh_group);
+ break;
+ data = chunk_from_thing(feature->arg.privkey);
+ break;
case FEATURE_PRIVKEY_GEN:
case FEATURE_PRIVKEY_GEN:
+ data = chunk_from_thing(feature->arg.privkey_gen);
+ break;
+ data = chunk_from_thing(feature->arg.pubkey);
+ break;
case FEATURE_PRIVKEY_SIGN:
case FEATURE_PRIVKEY_SIGN:
+ data = chunk_from_thing(feature->arg.privkey_sign);
+ break;
case FEATURE_PUBKEY_VERIFY:
case FEATURE_PUBKEY_VERIFY:
+ data = chunk_from_thing(feature->arg.pubkey_verify);
+ break;
case FEATURE_PRIVKEY_DECRYPT:
case FEATURE_PRIVKEY_DECRYPT:
+ data = chunk_from_thing(feature->arg.privkey_decrypt);
+ break;
case FEATURE_PUBKEY_ENCRYPT:
case FEATURE_PUBKEY_ENCRYPT:
+ data = chunk_from_thing(feature->arg.pubkey_encrypt);
+ break;
case FEATURE_CERT_DECODE:
case FEATURE_CERT_ENCODE:
case FEATURE_CERT_DECODE:
case FEATURE_CERT_ENCODE:
+ data = chunk_from_thing(feature->arg.cert);
+ break;
case FEATURE_CONTAINER_DECODE:
case FEATURE_CONTAINER_ENCODE:
case FEATURE_CONTAINER_DECODE:
case FEATURE_CONTAINER_ENCODE:
+ data = chunk_from_thing(feature->arg.container);
+ break;
case FEATURE_EAP_SERVER:
case FEATURE_EAP_PEER:
case FEATURE_EAP_SERVER:
case FEATURE_EAP_PEER:
- data = chunk_from_thing(feature->arg);
+ data = chunk_from_thing(feature->arg.eap);
break;
case FEATURE_CUSTOM:
data = chunk_create(feature->arg.custom,
break;
case FEATURE_CUSTOM:
data = chunk_create(feature->arg.custom,