aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-common.c
diff options
context:
space:
mode:
authorJoseph Myers <jsm28@cam.ac.uk>2000-12-07 07:56:44 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2000-12-07 07:56:44 +0000
commitc907e684899b80f605c6f318ac47d825cefd5e04 (patch)
treeb5375290ebf0a5a6f82ddbfa46e51e6bde6dbb84 /gcc/c-common.c
parent1c248308f49a5410b9e69330a924f264707625d7 (diff)
downloadgcc-c907e684899b80f605c6f318ac47d825cefd5e04.zip
gcc-c907e684899b80f605c6f318ac47d825cefd5e04.tar.gz
gcc-c907e684899b80f605c6f318ac47d825cefd5e04.tar.bz2
c-common.c (warn_format_security): New variable.
* c-common.c (warn_format_security): New variable. (check_format_info): Warn about non-literal formats with no format arguments if either -Wformat-nonliteral or -Wformat-security is specified. (set_Wformat): Set warn_format_security for settings other than 1. * c-common.h (warn_format_security): Declare. * c-decl.c (c_decode_option): Decode -Wformat-security and -Wno-format-security. * invoke.texi: Document -Wformat-security. * toplev.c (documented_lang_options): Include -Wformat-security and -Wno-format-security. cp: * decl2.c (lang_decode_option): Handle -Wformat-security. testsuite: * format-sec-1.c: New test. From-SVN: r38106
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r--gcc/c-common.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 5e7666a..2baba02 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -193,6 +193,10 @@ int warn_format_extra_args;
int warn_format_nonliteral;
+/* Warn about possible security problems with calls to format functions. */
+
+int warn_format_security;
+
/* Nonzero means warn about possible violations of sequence point rules. */
int warn_sequence_point;
@@ -2363,7 +2367,7 @@ check_format_info (status, info, params)
params = TREE_CHAIN (params);
++arg_num;
}
- if (params == 0 && warn_format_nonliteral)
+ if (params == 0 && (warn_format_nonliteral || warn_format_security))
status_warning (status, "format not a string literal and no format arguments");
else if (warn_format_nonliteral)
status_warning (status, "format not a string literal, argument types not checked");
@@ -3401,7 +3405,10 @@ set_Wformat (setting)
warn_format_y2k = setting;
warn_format_extra_args = setting;
if (setting != 1)
- warn_format_nonliteral = setting;
+ {
+ warn_format_nonliteral = setting;
+ warn_format_security = setting;
+ }
}
/* Print a warning if a constant expression had overflow in folding.