]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[build] Fix strict-aliasing warning on older gcc versions
authorMichael Brown <mcb30@ipxe.org>
Mon, 27 Jul 2015 22:28:01 +0000 (23:28 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 27 Jul 2015 22:28:01 +0000 (23:28 +0100)
Reported-by: James A. Peltier <jpeltier@sfu.ca>
Reported-by: Matthew Helton <mwhelton@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/crypto/aes.c

index 1605d2ee83ec36b9f9b79011f78ef890d9942686..b9e206bfb583c845e05c551fd97b574a1cfa3cbc 100644 (file)
@@ -156,13 +156,17 @@ static struct aes_table aes_invmixcolumns;
  */
 static inline __attribute__ (( always_inline )) uint32_t
 aes_entry_column ( const union aes_table_entry *entry, unsigned int column ) {
-       const uint8_t *first __attribute__ (( may_alias ));
+       const union {
+               uint8_t byte;
+               uint32_t column;
+       } __attribute__ (( may_alias )) *product;
 
-       /* Locate start of relevant four-byte subset */
-       first = &entry->byte[ 4 - column ];
+       /* Locate relevant four-byte subset */
+       product = container_of ( &entry->byte[ 4 - column ],
+                                typeof ( *product ), byte );
 
        /* Extract this four-byte subset */
-       return ( *( ( uint32_t * ) first ) );
+       return product->column;
 }
 
 /**