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


Reply via email to