1 /* { dg-do compile }
2 { dg-options "-O2 -Wstringop-overflow" } */
3
4 extern char* strchr (const char*, int);
5 extern char* strcpy (char*, const char*);
6 extern void* malloc (__SIZE_TYPE__);
7 extern __SIZE_TYPE__ strlen (const char *);
8 struct define_item {
9 int len;
10 char value[1];
11 };
12
13 struct define_item * foo(char *name)
14 {
15 char * p;
16 char * value;
17 struct define_item * ptr;
18
19 p = strchr (name, '=');
20 if (1 && p) {
21 value = p+1;
22 } else
23 value = "1";
24
25 ptr = malloc(sizeof(struct define_item) + strlen(value));
26 strcpy(ptr->value, value); /* { dg-bogus "bytes into a region" } */
27 return ptr;
28 }