mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 00:21:03 +08:00
Separate NUL byte detection from rest of -Wformat warnings
From-SVN: r123640
This commit is contained in:
parent
594dc04813
commit
ca178f85a6
@ -1,3 +1,11 @@
|
||||
2007-04-07 Bruce Korb <bkorb@gnu.org>
|
||||
|
||||
* c.opt: Add -Wformat-contains-nul.
|
||||
* c-format.c (set_Wformat): Set warn_format_contains_nul to the
|
||||
-Wformat setting.
|
||||
(check_format_info_main): Check OPT_Wformat_contains_nul before emitting
|
||||
the NUL byte warning.
|
||||
|
||||
2007-04-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/i386.c (ix86_handle_option): Handle SSSE3.
|
||||
|
@ -40,6 +40,7 @@ set_Wformat (int setting)
|
||||
warn_format = setting;
|
||||
warn_format_extra_args = setting;
|
||||
warn_format_zero_length = setting;
|
||||
warn_format_contains_nul = setting;
|
||||
if (setting != 1)
|
||||
{
|
||||
warn_format_nonliteral = setting;
|
||||
@ -1482,7 +1483,7 @@ check_format_info_main (format_check_results *res,
|
||||
if (*format_chars == 0)
|
||||
{
|
||||
if (format_chars - orig_format_chars != format_length)
|
||||
warning (OPT_Wformat, "embedded %<\\0%> in format");
|
||||
warning (OPT_Wformat_contains_nul, "embedded %<\\0%> in format");
|
||||
if (info->first_arg_num != 0 && params != 0
|
||||
&& has_operand_number <= 0)
|
||||
{
|
||||
|
@ -1106,6 +1106,8 @@ c_common_post_options (const char **pfilename)
|
||||
"-Wformat-zero-length ignored without -Wformat");
|
||||
warning (OPT_Wformat_nonliteral,
|
||||
"-Wformat-nonliteral ignored without -Wformat");
|
||||
warning (OPT_Wformat_contains_nul,
|
||||
"-Wformat-contains-nul ignored without -Wformat");
|
||||
warning (OPT_Wformat_security,
|
||||
"-Wformat-security ignored without -Wformat");
|
||||
}
|
||||
|
@ -216,6 +216,10 @@ Wformat-nonliteral
|
||||
C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
|
||||
Warn about format strings that are not literals
|
||||
|
||||
Wformat-contains-nul
|
||||
C ObjC C++ ObjC++ Var(warn_format_contains_nul)
|
||||
Warn about format strings that contain NUL bytes
|
||||
|
||||
Wformat-security
|
||||
C ObjC C++ ObjC++ Var(warn_format_security) Warning
|
||||
Warn about possible security problems with format functions
|
||||
|
@ -1,3 +1,9 @@
|
||||
2007-04-07 Bruce Korb <bkorb@gnu.org>
|
||||
|
||||
* gcc.dg/format/opt-6.c: New test.
|
||||
* gcc.dg/format/nul-1.c: New test.
|
||||
* gcc.dg/format/nul-2.c: New test.
|
||||
|
||||
2007-04-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libgfortran/31395
|
||||
|
14
gcc/testsuite/gcc.dg/format/nul-1.c
Normal file
14
gcc/testsuite/gcc.dg/format/nul-1.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* Test diagnostics for suppressing contains nul
|
||||
-Wformat. -Wformat. */
|
||||
/* Origin: Bruce Korb <bkorb@gnu.org> */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wformat -Wno-format-contains-nul" } */
|
||||
|
||||
#include "format.h"
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
static char const fmt[] = "x%s\0%s\n\0abc";
|
||||
printf (fmt+4, fmt+8); /* { dg-bogus "embedded.*in format" "bogus embed warning" } */
|
||||
}
|
16
gcc/testsuite/gcc.dg/format/nul-2.c
Normal file
16
gcc/testsuite/gcc.dg/format/nul-2.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* Test diagnostics for options used on their own without
|
||||
-Wformat. -Wformat-. */
|
||||
/* Origin: Bruce Korb <bkorb@gnu.org> */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wformat" } */
|
||||
|
||||
/* { dg-warning "warning: embedded .* in format" "ignored" { target *-*-* } 0 } */
|
||||
|
||||
#include "format.h"
|
||||
|
||||
void
|
||||
fumble (void)
|
||||
{
|
||||
static char const fmt[] = "x%s\0%s\n\0abc";
|
||||
printf (fmt+4, fmt+8);
|
||||
}
|
7
gcc/testsuite/gcc.dg/format/opt-6.c
Normal file
7
gcc/testsuite/gcc.dg/format/opt-6.c
Normal file
@ -0,0 +1,7 @@
|
||||
/* Test diagnostics for options used on their own without
|
||||
-Wformat. -Wformat-contains-nul. */
|
||||
/* Origin: Bruce Korb <bkorb@gnu.org> */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wformat-contains-nul" } */
|
||||
|
||||
/* { dg-warning "warning: -Wformat-contains-nul ignored without -Wformat" "ignored" { target *-*-* } 0 } */
|
Loading…
x
Reference in New Issue
Block a user