integrity: Use static_assert() to check struct sizes
Subsystems (4)
PATCH 1/1 integrity: Use static_assert() to check struct sizes
Commit 38aa3f5ac6d2 ("integrity: Avoid -Wflex-array-member-not-at-end warnings") introduced tagged struct evm_ima_xattr_data_hdr and struct ima_digest_data_hdr. We want to ensure that when new members need to be added to the flexible structures, they are always included within these tagged structs.
So, we use static_assert() to ensure that the memory layout for both the flexible structure and the tagged struct is the same after any changes.
--- security/integrity/integrity.h | 4 ++++ 1 file changed, 4 insertions(+)
security/integrity/integrity.h +4 -0
@@ -37,6 +37,8 @@ struct evm_ima_xattr_data { );u8 data[]; } __packed; +static_assert (offsetof(struct evm_ima_xattr_data , data) ==sizeof (struct evm_ima_xattr_data_hdr ), +"struct member likely outside of __struct_group()" );/* Only used in the EVM HMAC code. */ struct evm_xattr {
@@ -65,6 +67,8 @@ struct ima_digest_data { );u8 digest[]; } __packed; +static_assert (offsetof(struct ima_digest_data , digest) ==sizeof (struct ima_digest_data_hdr ), +"struct member likely outside of __struct_group()" );/* * Instead of wrapping the ima_digest_data struct inside a local structure
Signature · 1 line
2.34.1
Quoted 9 lines · Gustavo A. R. Silva
Commit
38aa3f5ac6d2("integrity: Avoid -Wflex-array-member-not-at-end warnings") introduced taggedstruct evm_ima_xattr_data_hdrandstruct ima_digest_data_hdr. We want to ensure that when new members need to be added to the flexible structures, they are always included within these tagged structs.So, we use
static_assert()to ensure that the memory layout for both the flexible structure and the tagged struct is the same after any changes.
Looks good to me.
Thanks
Roberto
Quoted 27 lines
Signed-off-by Gustavo A. R. Silva <[email protected]>--- security/integrity/integrity.h | 4 ++++ 1 file changed, 4 insertions(+)security/integrity/integrity.h +4
-0@@ -37,6 +37,8 @@ struct evm_ima_xattr_data { );u8 data[]; } __packed; +static_assert (offsetof(struct evm_ima_xattr_data , data) ==sizeof (struct evm_ima_xattr_data_hdr ), +"struct member likely outside of __struct_group()" );/* Only used in the EVM HMAC code. */ struct evm_xattr {@@ -65,6 +67,8 @@ struct ima_digest_data { );u8 digest[]; } __packed; +static_assert (offsetof(struct ima_digest_data , digest) ==sizeof (struct ima_digest_data_hdr ), +"struct member likely outside of __struct_group()" );/* * Instead of wrapping the ima_digest_data struct inside a local structure
Mimi Zohar
maintainerQuoted 11 lines · Gustavo A. R. Silva
Commit
38aa3f5ac6d2("integrity: Avoid -Wflex-array-member-not-at-end warnings") introduced taggedstruct evm_ima_xattr_data_hdrandstruct ima_digest_data_hdr. We want to ensure that when new members need to be added to the flexible structures, they are always included within these tagged structs.So, we use
static_assert()to ensure that the memory layout for both the flexible structure and the tagged struct is the same after any changes.Signed-off-by Gustavo A. R. Silva <[email protected]>
Sorry for the delay. It's now queued in next-integrity.
thanks,
Mimi