Menu

#736 format not a string literal and no format arguments [-Werror=format-security]

5.3-open
open
nobody
None
2
2022-07-27
2022-07-27
No

Hello,

I am unable to build gutenprint-5.3.4-2022-06-24T01-00-8808d602 on Solaris using gcc 11.3.0.

Throughout the source *printf() formating functions are used with _() as the format argument. _() is used as a wrapper around gettext function to obtain localized version of string.

One example for all:

src/main/print-dyesub.c:3513:7: error: format not a string literal and no format arguments [-Werror=format-security]
3513 |       stp_eprintf(v, _("Must use glossy overcoat with panorama print sizes!\n"));
     |       ^~~~~~~~~~~
     In function 'ps_parameters_internal',

In most cases fix is to use something like this instead:

stp_eprintf(v, "%", _("Must use glossy overcoat with panorama print sizes!\n"));

Configure summary:

================================================================
  Release: gutenprint 5.3.4-2022-06-24T01-00-8808d602 generated on 24 Jun 2022
  Generated at Wed Jul 27 17:20:44 CEST 2022 by mrehak

  Features:
    Build CUPS:                                 yes, installing in /usr
        Build CUPS 1.2 enhancements:            yes
        Build CUPS PPD files:                   no
        Generate PS level 3 CUPS PPD files:     yes
        Build genppd statically:                no
            ***WARNING: Use of --disable-static-genppd or --disable-static
                        when building CUPS is very dangerous.  The build may
                        fail when building the PPD files, or may *SILENTLY*
                        build incorrect PPD files or cause other problems.
                        Please review the README and release notes carefully!
        Build CUPS dyesub USB backend:          yes
    Build EPSON inkjet utility:                 yes
    Build enhanced Print plugin for GIMP:       no
    Build test programs:                        yes
    Build testpattern generator:                yes

  Installation summary:
    Installation prefix:                        /usr
    Exec prefix:                                /usr ({prefix})
    Data directory:                             /usr/share/gutenprint
    Library directory:                          /usr/lib/amd64/gutenprint (/usr/lib/amd64/gutenprint)
    Executable directory:                       /usr/bin (/usr/bin)
    XML data directory:                         /usr/share/gutenprint/5.3/xml
    Module directory:                           /usr/lib/amd64/gutenprint/5.3/modules (/usr/lib/amd64/gutenprint/5.3/mo
dules)
    Install sample images:                      yes

  General configuration:
    Configure arguments:                        '--prefix=/usr' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--sbindi
r=/usr/sbin' '--libdir=/usr/lib/amd64' '--infodir=/usr/share/info' '--enable-escputil' --without-gimp2 '--enable-cups-1
-enhancements' '--enable-shared' '--disable-static-genppd' '--enable-simplified-cups-ppds' --without-readline '--disa
ble-static'
    Compiler:                                   /usr/gcc/11/bin/gcc
    Compiler Version:                           gcc version 11.3.0 (GCC)
    Compiler options:                           -Disfinite=finite -m64 -fPIC -DPIC -O3 -ffile-prefix-map=/builds/mrehak
/workspace/gutenprint/components/gutenprint=. -O3  -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissin
g-declarations -Wnested-externs -Wwrite-strings -Werror-implicit-function-declaration -Winline -Wformat=2 -finline-limi
t=131072 -Wformat -Werror=format-security -D_POSIX_C_SOURCE=200809L -std=c99
    Build static libraries:                     no
    Build shared libraries:                     yes
    Maintainer mode:                            no
    Use i18n:                                   yes
    Generate profiling information:             no
    Generate debugging symbols:                 no
    Use modules:                                yes
    Use readline libraries:                     no
    uname -a output:                            SunOS ulx-0 5.11 11.4.48.126.0 i86pc i386 i86pc non-virtualized
================================================================

This is potential security bug.

I am able to create insane patch to workaround all the occurrences but I am not able to maintain it during future gutenprint updates. Thus I am asking for help fixing this.

Helpful information:
https://dwheeler.com/essays/write_it_secure_1.html
https://www.gnu.org/software/gettext/manual/html_node/c_002dformat-Flag.html

Thank you.

Discussion


Log in to post a comment.

MongoDB Logo MongoDB