Hi! For the following program:
$ cat buf.c #include <stdio.h> int main(void) { char *p, buf[5]; p = buf + 6; printf("%p\n", p); } There are no warnings in gcc, as I would expect: $ gcc -Wall -Wextra buf.c -O0 Clang does warn, however: $ clang -Weverything -Wall -Wextra buf.c -O0buf.c:8:17: warning: format specifies type 'void *' but the argument has type 'char *' [-Wformat-pedantic]
printf("%p\n", p); ~~ ^ %sbuf.c:7:6: warning: the pointer incremented by 6 refers past the end of the array (that contains 5 elements) [-Warray-bounds-pointer-arithmetic]
p = buf + 6; ^ ~ buf.c:5:2: note: array 'buf' declared here char *p, buf[5]; ^ 2 warnings generated. Cheers, Alex -- <http://www.alejandro-colomar.es/>
OpenPGP_signature
Description: OpenPGP digital signature