>       * lib/openat-die.c (_): Likewise.

The change to openat-die.c triggers a new warning in gzip, from the gcc 13
options
  -Wformat -Wformat-security
Since this package's "make distcheck" enables -Werror, it even triggers an 
error:

$ make distcheck
...
  CC       libgzip_a-openat-die.o
openat-die.c: In function 'openat_save_fail':
openat-die.c:37:3: error: format not a string literal and no format arguments 
[-Werror=format-security]
   37 |   error (exit_failure, errnum,
      |   ^~~~~
openat-die.c:37:3: error: format not a string literal and no format arguments 
[-Werror=format-security]
openat-die.c: In function 'openat_restore_fail':
openat-die.c:56:3: error: format not a string literal and no format arguments 
[-Werror=format-security]
   56 |   error (exit_failure, errnum,
      |   ^~~~~
openat-die.c:56:3: error: format not a string literal and no format arguments 
[-Werror=format-security]
cc1: all warnings being treated as errors
make[6]: *** [Makefile:3281: libgzip_a-openat-die.o] Error 1

The warning is pointless, since the gettext tools make sure that the localized
variant of the string will not access nonexistent format arguments. Thus, it's
only a code style warning, misplaced under the umbrella of "security".

Anyway, it's easy to fix.


2024-12-10  Bruno Haible  <br...@clisp.org>

        openat-die: Fix a gcc -Wformat -Wformat-security warning.
        * lib/openat-die.c (openat_save_fail, openat_restore_fail): Put the
        internationalized error message into non-format-string position.

diff --git a/lib/openat-die.c b/lib/openat-die.c
index 403ca4ff7c..022109b433 100644
--- a/lib/openat-die.c
+++ b/lib/openat-die.c
@@ -34,7 +34,7 @@ _Noreturn void
 openat_save_fail (int errnum)
 {
 #ifndef GNULIB_LIBPOSIX
-  error (exit_failure, errnum,
+  error (exit_failure, errnum, "%s",
          _("unable to record current working directory"));
 #endif
   /* _Noreturn cannot be applied to error, since it returns
@@ -53,7 +53,7 @@ _Noreturn void
 openat_restore_fail (int errnum)
 {
 #ifndef GNULIB_LIBPOSIX
-  error (exit_failure, errnum,
+  error (exit_failure, errnum, "%s",
          _("failed to return to initial working directory"));
 #endif
 




Reply via email to