annotate gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test whether buffer overflow warnings for __strncat_chk builtin
kono
parents:
diff changeset
2 are emitted properly. */
kono
parents:
diff changeset
3 /* { dg-do compile } */
kono
parents:
diff changeset
4 /* { dg-options "-O2 -std=gnu99 -ftrack-macro-expansion=0" } */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 extern void abort (void);
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 #include "../gcc.c-torture/execute/builtins/chk.h"
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 char buf1[20];
kono
parents:
diff changeset
11 char *q;
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 void
kono
parents:
diff changeset
14 test (int arg, ...)
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 char *p = &buf1[10];
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 *p = 0;
kono
parents:
diff changeset
19 strncat (p, "abcdefg", 9);
kono
parents:
diff changeset
20 *p = 0;
kono
parents:
diff changeset
21 strncat (p, "abcdefghi", 9);
kono
parents:
diff changeset
22 *p = 0;
kono
parents:
diff changeset
23 strncat (p, "abcdefghij", 9);
kono
parents:
diff changeset
24 *p = 0;
kono
parents:
diff changeset
25 strncat (p, "abcdefghi", 10);
kono
parents:
diff changeset
26 *p = 0;
kono
parents:
diff changeset
27 strncat (p, "abcdefghij", 10); /* { dg-warning "writing 11 bytes into a region of size 10 overflows the destination" } */
kono
parents:
diff changeset
28 *p = 0;
kono
parents:
diff changeset
29 strncat (p, "abcdefgh", 11);
kono
parents:
diff changeset
30 *p = 0;
kono
parents:
diff changeset
31 strncat (p, "abcdefghijkl", 11); /* { dg-warning "specified bound 11 exceeds destination size 10" } */
kono
parents:
diff changeset
32 *p = 0;
kono
parents:
diff changeset
33 strncat (p, q, 9);
kono
parents:
diff changeset
34 *p = 0;
kono
parents:
diff changeset
35 strncat (p, q, 10); /* { dg-warning "specified bound 10 equals destination size" } */
kono
parents:
diff changeset
36 *p = 0;
kono
parents:
diff changeset
37 strncat (p, q, 11); /* { dg-warning "specified bound 11 exceeds destination size 10" } */
kono
parents:
diff changeset
38 }