]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
modula2: Don't treat % in Modula 2 messages specially
authorJakub Jelinek <jakub@redhat.com>
Mon, 19 Dec 2022 14:00:47 +0000 (15:00 +0100)
committerJakub Jelinek <jakub@redhat.com>
Mon, 19 Dec 2022 14:00:47 +0000 (15:00 +0100)
On top of the just posted patch, this patch makes sure that
any % chars in message strings aren't treated as format chars.
None of these functions take variable number of arguments, so for
most of format specifiers there is nowhere to take arguments from,
it is true that a couple of format specifiers don't take any
arguments - %%, %m, %<, %>, %' - so it is actually possible
to use them, but one needs to verify that no other are emitted and
that what should be printed as % is really emitted as %%.
If the FE does that, then please ignore this patch, otherwise I think
it is safer to do this.

2022-12-19  Jakub Jelinek  <jakub@redhat.com>

* gm2-gcc/m2linemap.cc (m2linemap_ErrorAt, m2linemap_ErrorAtf,
m2linemap_WarningAtf, m2linemap_NoteAtf, m2linemap_internal_error):
Call functions with "%s", message rather than just message, so that
% chars in message aren't treated as format specifiers.

gcc/m2/gm2-gcc/m2linemap.cc

index c6189b7f1abbbb0039de7b52f59c2a2c8b66a821..ba09c0b8c8db1722ed6a2aff783576e2737615b5 100644 (file)
@@ -177,7 +177,7 @@ EXTERN
 void
 m2linemap_ErrorAt (location_t location, char *message)
 {
-  error_at (location, message);
+  error_at (location, "%s", message);
 }
 
 /* m2linemap_ErrorAtf - wraps up an error message.  */
@@ -198,7 +198,7 @@ m2linemap_ErrorAtf_1 (location_t location, const char *message, ...)
 void
 m2linemap_ErrorAtf (location_t location, const char *message)
 {
-  m2linemap_ErrorAtf_1 (location, message);
+  m2linemap_ErrorAtf_1 (location, "%s", message);
 }
 
 /* m2linemap_WarningAtf - wraps up a warning message.  */
@@ -219,7 +219,7 @@ m2linemap_WarningAtf_1 (location_t location, const char *message, ...)
 void
 m2linemap_WarningAtf (location_t location, const char *message)
 {
-  m2linemap_WarningAtf_1 (location, message);
+  m2linemap_WarningAtf_1 (location, "%s", message);
 }
 
 /* m2linemap_NoteAtf - wraps up a note message.  */
@@ -240,7 +240,7 @@ m2linemap_NoteAtf_1 (location_t location, const char *message, ...)
 void
 m2linemap_NoteAtf (location_t location, const char *message)
 {
-  m2linemap_NoteAtf_1 (location, message);
+  m2linemap_NoteAtf_1 (location, "%s", message);
 }
 
 /* m2linemap_internal_error - allow Modula-2 to use the GCC internal error.  */
@@ -248,7 +248,7 @@ m2linemap_NoteAtf (location_t location, const char *message)
 void
 m2linemap_internal_error (const char *message)
 {
-  internal_error (message);
+  internal_error ("%s", message);
 }
 
 /* UnknownLocation - return the predefined location representing an