2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
[official-gcc.git] / gcc / testsuite / gcc.dg / builtin-strncat-chk-1.c
blob44677f16778257bec02bdf1c9f6494c7481a31bd
1 /* Test whether buffer overflow warnings for __strncat_chk builtin
2 are emitted properly. */
3 /* { dg-do compile } */
4 /* { dg-options "-O2 -std=gnu99 -ftrack-macro-expansion=0" } */
6 extern void abort (void);
8 #include "../gcc.c-torture/execute/builtins/chk.h"
10 char buf1[20];
11 char *q;
13 void
14 test (int arg, ...)
16 char *p = &buf1[10];
18 *p = 0;
19 strncat (p, "abcdefg", 9);
20 *p = 0;
21 strncat (p, "abcdefghi", 9);
22 *p = 0;
23 strncat (p, "abcdefghij", 9);
24 *p = 0;
25 strncat (p, "abcdefghi", 10);
26 *p = 0;
27 strncat (p, "abcdefghij", 10); /* { dg-warning "will always overflow" } */
28 *p = 0;
29 strncat (p, "abcdefgh", 11);
30 *p = 0;
31 strncat (p, "abcdefghijkl", 11); /* { dg-warning "will always overflow" } */
32 *p = 0;
33 strncat (p, q, 9);
34 *p = 0;
35 strncat (p, q, 10); /* { dg-warning "might overflow" } */
36 *p = 0;
37 strncat (p, q, 11); /* { dg-warning "might overflow" } */