]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/Wstringop-overflow-52.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / Wstringop-overflow-52.c
CommitLineData
83685efd
MS
1
2/* PR middle-end/97023 - missing warning on buffer overflow in chained mempcpy
3 Verify that writes by built-in functions to objects through pointers
4 returned by ordinary (non-built-int) function are assumed to point to
5 the beginning of objects.
6 { dg-do compile }
7 { dg-options "-O2" } */
8
9#include "range.h"
10
11void* memcpy (void*, const void*, size_t);
12void* memset (void*, int, size_t);
13
14void sink (void*, ...);
15
16extern char* arrptr[];
17extern char* ptr;
18extern char* retptr (void);
19struct S { char *p; };
20extern struct S retstruct (void);
21
22void nowarn_ptr (void)
23{
24 {
25 void *p = arrptr;
26 memset (p - 1, 0, 12345); // { dg-warning "\\\[-Wstringop-overflow" }
27 memset (p,0, 12345);
28 memset (p,0, DIFF_MAX - 1);
29 }
30
31 {
32 char *p = arrptr[0];
33 memset (p - 1, 0, 12345);
34 memset (p - 12345, 0, 12345);
35 memset (p - 1234, 0, DIFF_MAX - 1);
36 memset (p - DIFF_MAX + 1, 0, 12345);
37 }
38
39 {
40 char *p = ptr;
41 memset (p - 1, 0, 12345);
42 memset (p - 12345, 0, 12345);
43 memset (p - 1234, 0, DIFF_MAX - 1);
44 memset (p - DIFF_MAX + 1, 0, 12345);
45 }
46
47 {
48 char *p = retptr ();
49 memset (p - 1, 0, 12345);
50 memset (p - 12345, 0, 12345);
51 memset (p - 1234, 0, DIFF_MAX - 1);
52 memset (p - DIFF_MAX + 1, 0, 12345);
53 }
54
55 {
56 char *p = retstruct ().p;
57 memset (p - 1, 0, 12345);
58 memset (p - 12345, 0, 12345);
59 memset (p - 1234, 0, DIFF_MAX - 1);
60 memset (p - DIFF_MAX + 1, 0, 12345);
61 }
62}