PR middle-end/78138 - missing warnings on buffer overflow with non-constant source...
authorMartin Sebor <msebor@redhat.com>
Tue, 10 Jan 2017 22:35:22 +0000 (22:35 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Tue, 10 Jan 2017 22:35:22 +0000 (15:35 -0700)
gcc/testsuite/ChangeLog:

PR middle-end/78138
* gcc.dg/pr78138.c: New test.

From-SVN: r244297

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr78138.c [new file with mode: 0644]

index 6fdfcacafebd540c8d53f78316648579079907bb..8f5f8dfc0288e087ca41bb3b2a4487af2c62f7b6 100644 (file)
@@ -1,3 +1,8 @@
+2017-01-10  Martin Sebor  <msebor@redhat.com>
+
+       PR middle-end/78138
+       * gcc.dg/pr78138.c: New test. 
+
 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
 
        PR c++/77949
diff --git a/gcc/testsuite/gcc.dg/pr78138.c b/gcc/testsuite/gcc.dg/pr78138.c
new file mode 100644 (file)
index 0000000..ecc9ee6
--- /dev/null
@@ -0,0 +1,22 @@
+/* PR middle-end/78138 - missing warnings on buffer overflow with non-constant
+   source length
+   { dg-do compile }
+   { dg-options "-O2 -Wformat-length" } */
+
+char d [5];
+
+void* memcpy (void*, const void*, unsigned long);
+extern char* strcpy (char*, const char*);
+
+void f (int i, int j)
+{
+  strcpy (d, j ? "12345" : "123456");   /* { dg-warning ".strcpy. writing 6 bytes into a region of size 5" } */
+}
+
+void g (void *p)
+{
+  extern unsigned n;
+  if (n < 17 || 32 < n) n = 7;
+
+  memcpy (d, p, n);   /* { dg-warning ".memcpy.: writing between 7 and 32 bytes into a region of size 5" } */
+};