gerbv 2.7.0 fails to build with -Werror=format-security
Brought to you by:
spetm,
thepurlieu
Unfortunately the recent gerbv version 2.7.0 fails to build with additional CFLAGS -Werror=format-security
gcc -DLOCALEDIR=\"/usr/share/locale\" -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -DPREFIXDIR=\"/usr\" -DBINDIR=\"/usr/bin\" -DBACKEND_DIR='"/usr/share/gerbv/scheme/"' -DSCMSUBDIR='"scheme"' -g -O2 -fdebug-prefix-map=/build/gerbv-2.7.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -c -o scheme.o scheme.c interface.c: In function 'rename_main_window': interface.c:78:3: error: format not a string literal and no format arguments [-Werror=format-security] g_string_printf(win_title, _(gerbv_win_title)); ^~~~~~~~~~~~~~~ interface.c: In function 'interface_create_gui': interface.c:340:2: warning: 'gdk_pixbuf_new_from_inline' is deprecated [-Wdeprecated-declarations] pointerpixbuf = gdk_pixbuf_new_from_inline(-1, pointer, FALSE, NULL); ^~~~~~~~~~~~~ In file included from /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h:34, from /usr/include/gtk-2.0/gdk/gdkpixbuf.h:37, from /usr/include/gtk-2.0/gdk/gdkcairo.h:28, from /usr/include/gtk-2.0/gdk/gdk.h:33, from /usr/include/gtk-2.0/gtk/gtk.h:32, from gerbv.h:77, from interface.c:29: /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h:362:12: note: declared here GdkPixbuf* gdk_pixbuf_new_from_inline (gint data_length, ^~~~~~~~~~~~~~~~~~~~~~~~~~ interface.c:341:2: warning: 'gdk_pixbuf_new_from_inline' is deprecated [-Wdeprecated-declarations] movepixbuf = gdk_pixbuf_new_from_inline(-1, move, FALSE, NULL); ^~~~~~~~~~ In file included from /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h:34, from /usr/include/gtk-2.0/gdk/gdkpixbuf.h:37, from /usr/include/gtk-2.0/gdk/gdkcairo.h:28, from /usr/include/gtk-2.0/gdk/gdk.h:33, from /usr/include/gtk-2.0/gtk/gtk.h:32, from gerbv.h:77, from interface.c:29: /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h:362:12: note: declared here GdkPixbuf* gdk_pixbuf_new_from_inline (gint data_length, ^~~~~~~~~~~~~~~~~~~~~~~~~~ interface.c:342:2: warning: 'gdk_pixbuf_new_from_inline' is deprecated [-Wdeprecated-declarations] zoompixbuf = gdk_pixbuf_new_from_inline(-1, lzoom, FALSE, NULL); ^~~~~~~~~~ In file included from /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h:34, from /usr/include/gtk-2.0/gdk/gdkpixbuf.h:37, from /usr/include/gtk-2.0/gdk/gdkcairo.h:28, from /usr/include/gtk-2.0/gdk/gdk.h:33, from /usr/include/gtk-2.0/gtk/gtk.h:32, from gerbv.h:77, from interface.c:29: /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h:362:12: note: declared here GdkPixbuf* gdk_pixbuf_new_from_inline (gint data_length, ^~~~~~~~~~~~~~~~~~~~~~~~~~ interface.c:343:2: warning: 'gdk_pixbuf_new_from_inline' is deprecated [-Wdeprecated-declarations] measurepixbuf = gdk_pixbuf_new_from_inline(-1, ruler, FALSE, NULL); ^~~~~~~~~~~~~ In file included from /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h:34, from /usr/include/gtk-2.0/gdk/gdkpixbuf.h:37, from /usr/include/gtk-2.0/gdk/gdkcairo.h:28, from /usr/include/gtk-2.0/gdk/gdk.h:33, from /usr/include/gtk-2.0/gtk/gtk.h:32, from gerbv.h:77, from interface.c:29: /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h:362:12: note: declared here GdkPixbuf* gdk_pixbuf_new_from_inline (gint data_length, ^~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors make[4]: *** [Makefile:732: interface.o] Error 1 make[4]: *** Waiting for unfinished jobs.... callbacks.c: In function 'callbacks_about_activate': callbacks.c:1878:12: warning: macro "__DATE__" might prevent reproducible builds [-Wdate-time] VERSION, __DATE__, __TIME__); ^~~~~~~~ callbacks.c:1878:22: warning: macro "__TIME__" might prevent reproducible builds [-Wdate-time] VERSION, __DATE__, __TIME__); ^~~~~~~~ make[4]: Leaving directory '/build/gerbv-2.7.0/src' make[3]: *** [Makefile:557: all] Error 2 make[3]: Leaving directory '/build/gerbv-2.7.0/src' make[2]: *** [Makefile:512: all-recursive] Error 1 make[2]: Leaving directory '/build/gerbv-2.7.0' make[1]: *** [Makefile:442: all] Error 2 make[1]: Leaving directory '/build/gerbv-2.7.0'
... if I try to fix this by adding a "%s",
a bit later also here.
libtool: compile: gcc -DLOCALEDIR=\"/usr/share/locale\" -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -DPREFIXDIR=\"/usr\" -DBINDIR=\"/usr/bin\" -DBACKEND_DIR=\"/usr/share/gerbv/scheme/\" -DSCMSUBDIR=\"scheme\" -g -O2 -fdebug-prefix-map=/build/gerbv-2.7.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -c drill_stats.c -fPIC -DPIC -o .libs/drill_stats.o drill_stats.c: In function 'gerbv_drill_stats_add_layer': drill_stats.c:181:7: error: format not a string literal and no format arguments [-Werror=format-security] this_layer, error->error_text); ^~~~~~~~~~ drill_stats.c:213:8: error: format not a string literal and no format arguments [-Werror=format-security] this_layer, error->error_text); ^~~~~~~~~~ cc1: some warnings being treated as errors make[4]: *** [Makefile:746: drill_stats.lo] Error 1 make[4]: Leaving directory '/build/gerbv-2.7.0/src' make[3]: *** [Makefile:557: all] Error 2 make[3]: Leaving directory '/build/gerbv-2.7.0/src' make[2]: *** [Makefile:512: all-recursive] Error 1 make[2]: Leaving directory '/build/gerbv-2.7.0' make[1]: *** [Makefile:442: all] Error 2 make[1]: Leaving directory '/build/gerbv-2.7.0'
This prevents an updating of gerbv in Debian for the upcomming Buster release.
Does this patch fix the problem?
Yes it does! Thank you!