This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Avoid -Werror=format-security errors in libcpp


Hi!

With the addition of build libcpp, my build failed because of distro default
flags of -Werror=format-security.

The first hunk is I think no big deal, making it const makes the warning
go away.

The second hunk is more controversial, as even making message const doesn't
help with the warning.  There is another option of using "%s" and
_( instead of N_ in message, or just keep it as is and I can keep the second
hunk as local hack.

Thoughts on this?

2015-01-15  Jakub Jelinek  <jakub@redhat.com>

	* macro.c (create_iso_definition): Make paste_op_error_msg var
	const.
	* expr.c (cpp_classify_number): Avoid -Wformat-security warning.

--- libcpp/macro.c.jj	2015-01-14 11:01:34.000000000 +0100
+++ libcpp/macro.c	2015-01-14 14:22:19.286949884 +0100
@@ -2947,7 +2947,7 @@ create_iso_definition (cpp_reader *pfile
   cpp_token *token;
   const cpp_token *ctoken;
   bool following_paste_op = false;
-  const char *paste_op_error_msg =
+  const char *const paste_op_error_msg =
     N_("'##' cannot appear at either end of a macro expansion");
   unsigned int num_extra_tokens = 0;
 
--- libcpp/expr.c.jj	2015-01-14 11:01:34.000000000 +0100
+++ libcpp/expr.c	2015-01-14 14:35:52.851002344 +0100
@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
 	  && CPP_OPTION (pfile, cpp_warn_long_long))
         {
-          const char *message = CPP_OPTION (pfile, cplusplus) 
-				? N_("use of C++11 long long integer constant")
-		                : N_("use of C99 long long integer constant");
-
 	  if (CPP_OPTION (pfile, c99))
             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
-				   0, message);
+				   0, CPP_OPTION (pfile, cplusplus)
+				      ? "use of C++11 long long integer constant"
+				      : "use of C99 long long integer constant");
           else
             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
-				      virtual_location, 0, message);
+				      virtual_location, 0,
+				      CPP_OPTION (pfile, cplusplus)
+				      ? "use of C++11 long long integer constant"
+				      : "use of C99 long long integer constant");
         }
 
       result |= CPP_N_INTEGER;


	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]