Control: tags -1 + patch

Am 27.09.2021 um 22:25 schrieb Helmut Grohne:

> Source: horst
> Version: 5.1-2
> Severity: serious
> Tags: ftbfs
>
> horst fails to build from source in unstable on amd64 due to ncurses
> having become stricter about format strings. A build now ends as
> follows:
>
> | cc -g -O2
> | -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong
> | -Wformat -Werror=format-security -std=gnu99 -Wall -Wextra -g
> | -I. -DVERSION=\"5.1\" -DDO_DEBUG -I/usr/include/libnl3 -Wdate-time
> | -D_FORTIFY_SOURCE=2 -c -o display-main.o display-main.c
> | display-main.c: In function ‘print_dump_win’:
> | display-main.c:56:2: error: format not a string literal and no format 
> arguments [-Werror=format-security]
> |    56 |  wprintw(dump_win, str);
> |       |  ^~~~~~~
> | display-main.c: In function ‘print_node_list_line’:
> | display-main.c:255:40: warning: format ‘%d’ expects argument of type
> | ‘int’, but argument 5 has type ‘long unsigned int’ [-Wformat=]
> |   255 |  mvwprintw(list_win, line, COL_SIG, "%3d", 
> -ewma_read(&n->phy_sig_avg));
> |       |                                      ~~^   
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> |       |                                        |   |
> |       |                                        int long unsigned int
> |       |                                      %3ld
> | display-main.c: In function ‘update_dump_win’:
> | display-main.c:455:21: warning: too many arguments for format 
> [-Wformat-extra-args]
> |   455 |   wprintw(dump_win, "%-7s", "ARP", ip_sprintf(p->ip_src));
> |       |                     ^~~~~~
> | display-main.c:481:31: warning: format ‘%llx’ expects argument of
> | type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’
> | {aka ‘long unsigned int’} [-Wformat=]
> |   481 |    wprintw(dump_win, "'%s' %llx", p->wlan_essid,
> |       |                            ~~~^
> |       |                               |
> |       |                               long long unsigned int
> |       |                            %lx
> |   482 |     p->wlan_tsf);
> |       |     ~~~~~~~~~~~
> |       |      |
> |       |      uint64_t {aka long unsigned int}
> | display-main.c: In function ‘sort_input’:
> | display-main.c:129:11: warning: this statement may fall through 
> [-Wimplicit-fallthrough=]
> |   129 |   do_sort = c;
> |       |   ~~~~~~~~^~~
> | display-main.c:131:2: note: here
> |   131 |  case '\r': case KEY_ENTER:
> |       |  ^~~~
> | cc1: some warnings being treated as errors
> | make[1]: *** [<builtin>: display-main.o] Error 1
> | make[1]: Leaving directory '/<<PKGBUILDDIR>>'
> | dh_auto_build: error: make -j1 returned exit code 2
> | make: *** [debian/rules:19: build] Error 25
> | dpkg-buildpackage: error: debian/rules build subprocess returned exit 
> status 2

I have attached a patch for the two errors, adding "%s" as penultimate
argument to the *printw calls.  Did not really look at the warnings.

From 8110d832bd6502b7caed75b6504bd6d24d30d36b Mon Sep 17 00:00:00 2001
From: Sven Joachim <svenj...@gmx.de>
Date: Thu, 14 Oct 2021 20:06:26 +0200
Subject: [PATCH] Fix string format errors with recent ncurses

---
 display-main.c | 2 +-
 display.c      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/display-main.c b/display-main.c
index b613291..6519895 100644
--- a/display-main.c
+++ b/display-main.c
@@ -53,7 +53,7 @@ static struct ewma bpsn_avg;
 void print_dump_win(const char *str, int refresh)
 {
 	wattron(dump_win, RED);
-	wprintw(dump_win, str);
+	wprintw(dump_win, "%s", str);
 	wattroff(dump_win, RED);
 	if (refresh)
 		wrefresh(dump_win);
diff --git a/display.c b/display.c
index 777c7a2..e0755f4 100644
--- a/display.c
+++ b/display.c
@@ -86,7 +86,7 @@ print_centered(WINDOW* win, int line, int cols, const char *fmt, ...)
 	vsnprintf(buf, cols, fmt, ap);
 	va_end(ap);

-	mvwprintw(win, line, cols / 2 - strlen(buf) / 2, buf);
+	mvwprintw(win, line, cols / 2 - strlen(buf) / 2, "%s", buf);
 	free(buf);
 }

--
2.33.0

Reply via email to