Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12e130b0 authored by David Howells's avatar David Howells Committed by Rusty Russell
Browse files

MODSIGN: Don't use enum-type bitfields in module signature info block



Don't use enum-type bitfields in the module signature info block as we can't be
certain how the compiler will handle them.  As I understand it, it is arch
dependent, and it is possible for the compiler to rearrange them based on
endianness and to insert a byte of padding to pad the three enums out to four
bytes.

Instead use u8 fields for these, which the compiler should emit in the right
order without padding.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent df2fc246
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -27,9 +27,9 @@
 *	- Information block
 */
struct module_signature {
	enum pkey_algo		algo : 8;	/* Public-key crypto algorithm */
	enum pkey_hash_algo	hash : 8;	/* Digest algorithm */
	enum pkey_id_type	id_type : 8;	/* Key identifier type */
	u8	algo;		/* Public-key crypto algorithm [enum pkey_algo] */
	u8	hash;		/* Digest algorithm [enum pkey_hash_algo] */
	u8	id_type;	/* Key identifier type [enum pkey_id_type] */
	u8	signer_len;	/* Length of signer's name */
	u8	key_id_len;	/* Length of key identifier */
	u8	__pad[3];