Paul Eggert wrote on 2016-10-20: > I'll leave rijndael-api-fst.c for Simon.
I'm still seeing the warnings with gcc-7.1: rijndael-api-fst.c: In function 'rijndaelBlockEncrypt': rijndael-api-fst.c:234:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ((uint32_t *) block)[0] = ((uint32_t *) input)[0] ^ ^ rijndael-api-fst.c: In function 'rijndaelPadEncrypt': rijndael-api-fst.c:317:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ((uint32_t *) block)[0] = ((uint32_t *) input)[0] ^ ^ rijndael-api-fst.c: In function 'rijndaelBlockDecrypt': rijndael-api-fst.c:390:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ((uint32_t *) block)[0] ^= ((uint32_t *) iv)[0]; ^ rijndael-api-fst.c: In function 'rijndaelPadDecrypt': rijndael-api-fst.c:484:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ((uint32_t *) block)[0] ^= ((uint32_t *) cipher->IV)[0]; ^ rijndael-api-fst.c:484:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] rijndael-api-fst.c:495:7: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] ((uint32_t *) block)[0] ^= ((uint32_t *) cipher->IV)[0]; ^ rijndael-api-fst.c:495:7: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] In gnupg's libgcrypt, Werner fixed it like this: https://dev.gnupg.org/rCf17d50bbd31b1faa24af1e46c10bba845becf585 https://dev.gnupg.org/rCdfb4673da8ee52d95e0a62c9f49ca8599943f22e But this fix is only effective for GCC. How could a compiler-independent fix look like? Bruno