aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2018-08-20 23:03:55 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2018-08-20 17:03:55 -0600
commit56c6d2673199f6074ae63321b7a257ce4535e06c (patch)
treea08396a5275f92c0597711b057026b9dd9729c00 /gcc
parent097f82ec9d19ccb5420c8df98cf35e1898b4fdab (diff)
downloadgcc-56c6d2673199f6074ae63321b7a257ce4535e06c.zip
gcc-56c6d2673199f6074ae63321b7a257ce4535e06c.tar.gz
gcc-56c6d2673199f6074ae63321b7a257ce4535e06c.tar.bz2
PR tree-optimization/87034 - missing -Wformat-overflow on a sprintf %s with a wide string
gcc/testsuite/ChangeLog: * gcc.dg/builtin-sprintf-warn-20.c: New test. From-SVN: r263676
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c22
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 969e036..3708a5c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-20 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/87034
+ * gcc.dg/builtin-sprintf-warn-20.c: New test.
+
2018-08-20 David Malcolm <dmalcolm@redhat.com>
PR other/84889
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
new file mode 100644
index 0000000..5966eab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/87034 - missing -Wformat-overflow on a sprintf
+ %s with a wide string
+ { dg-do compile }
+ { dg-options "-O2 -Wall -Wformat-overflow -ftrack-macro-expansion=0" } */
+
+typedef __WCHAR_TYPE__ wchar_t;
+
+extern int sprintf (char*, const char*, ...);
+
+struct S
+{
+ char a[1];
+ void (*pf)(void);
+};
+
+void test (struct S *p)
+{
+ const char *q = sizeof (wchar_t) == 2
+ ? (char*)L"\x4142\x4344" : (char*)L"\x41424344\x45464748";
+
+ sprintf (p->a, "%s", q); /* { dg-warning "\\\[-Wformat-overflow" "pr87034" { xfail *-*-*} } */
+}