app-text/fbpdf: backport -Werror=format-security fix, bug #714736
authorSergei Trofimovich <slyfox@gentoo.org>
Wed, 25 Mar 2020 19:46:02 +0000 (19:46 +0000)
committerSergei Trofimovich <slyfox@gentoo.org>
Wed, 25 Mar 2020 19:46:18 +0000 (19:46 +0000)
Reported-by: Toralf Förster
Closes: https://bugs.gentoo.org/714736
Package-Manager: Portage-2.3.95, Repoman-2.3.21
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
app-text/fbpdf/fbpdf-0_p20190202.ebuild
app-text/fbpdf/files/fbpdf-0_p20190202-printf.patch [new file with mode: 0644]

index 029af2a8ece18d7f4f91ad6c22d5292383c6ebdb..1ab615ca1074c26d67d840fc2b88b02a8bb94af4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -34,6 +34,7 @@ S=${WORKDIR}/${P}-${COMMIT}
 
 PATCHES=(
        "${FILESDIR}"/${P}-use-pkg-config.patch
+       "${FILESDIR}"/${P}-printf.patch
 )
 
 src_compile() {
diff --git a/app-text/fbpdf/files/fbpdf-0_p20190202-printf.patch b/app-text/fbpdf/files/fbpdf-0_p20190202-printf.patch
new file mode 100644 (file)
index 0000000..31f9fbe
--- /dev/null
@@ -0,0 +1,38 @@
+https://bugs.gentoo.org/714736
+
+From e89e36c01d09ca6aec03732e922e749257cac3f4 Mon Sep 17 00:00:00 2001
+From: Dmitry Bogatov <KAction@disroot.org>
+Date: Sun, 9 Feb 2020 00:47:09 -0500
+Subject: [PATCH] Avoid passing non-constant format string to printf
+
+gcc complains loudly on any code that uses anything but string literal
+as format string to printf. Right now format string is "const char *"
+and does not contain %-sequences, but should '%' appear in "usage"
+string in future, bad things would happen.
+
+Since formatting functionality of "printf" is not used anyway, replacing
+it with "puts" makes code both safer and easier to understand.
+---
+ fbpdf.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/fbpdf.c b/fbpdf.c
+index a58797f..65b654b 100644
+--- a/fbpdf.c
++++ b/fbpdf.c
+@@ -351,13 +351,13 @@ static void mainloop(void)
+ }
+ static char *usage =
+-      "usage: fbpdf [-r rotation] [-z zoom x10] [-p page] filename\n";
++      "usage: fbpdf [-r rotation] [-z zoom x10] [-p page] filename";
+ int main(int argc, char *argv[])
+ {
+       int i = 1;
+       if (argc < 2) {
+-              printf(usage);
++              puts(usage);
+               return 1;
+       }
+       strcpy(filename, argv[argc - 1]);