From 16e623362003276d161d941791f33397f74cbcdf Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Thu, 7 May 2020 23:32:36 +0300 Subject: [PATCH 1/2] Fix implicit fallthrough warning with gcc 9.3.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ../daemon/escape.c: In function ‘escape’: ../daemon/escape.c:49:10: error: this statement may fall through [-Werror=implicit-fallthrough=] 49 | if ((flags & LADISH_ESCAPE_FLAG_OTHER) == 0) | ^ ../daemon/escape.c:53:5: note: here 53 | case '<': /* invalid attribute value char (XML spec) */ | ^~~~ gcc (Gentoo 9.3.0 p2) 9.3.0 --- daemon/escape.c | 1 + wscript | 3 +++ 2 files changed, 4 insertions(+) diff --git a/daemon/escape.c b/daemon/escape.c index 1d4e0ccd..727ffdb9 100644 --- a/daemon/escape.c +++ b/daemon/escape.c @@ -50,6 +50,7 @@ void escape(const char ** src_ptr, char ** dst_ptr, unsigned int flags) { break; } + /* fall through intentionally, some compilers are parsing comments */ case '<': /* invalid attribute value char (XML spec) */ case '&': /* invalid attribute value char (XML spec) */ case '"': /* we store attribute values in double quotes - invalid attribute value char (XML spec) */ diff --git a/wscript b/wscript index a7594716..a785f34f 100644 --- a/wscript +++ b/wscript @@ -224,6 +224,9 @@ def configure(conf): if not conf.env['BUILD_PYLASH']: add_cflag(conf, '-Wextra') conf.env.append_unique('CXXFLAGS', '-Wno-unused-parameter') # the UNUSED() macro doesnt work for C++ + + add_cflag(conf, '-Wimplicit-fallthrough=2') + if conf.env['BUILD_WERROR']: add_cflag(conf, '-Werror') # for pre gcc-4.4, enable optimizations so use of uninitialized variables gets detected From 27e38d3f4bea8e095284d26ff0dacb3360ed2062 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Thu, 7 May 2020 23:38:18 +0300 Subject: [PATCH 2/2] Fix -Werror=restrict While one could be safe to assume that first input is read, then symlink target is copied to user-mode, it causes compiler warning. So, don't reuse the symlink filename buffer for storing symlink target. ../daemon/procfs.c:155:28: error: passing argument 2 to restrict-qualified parameter aliases with argument 1 [-Werror=restrict] 155 | ret = readlink(g_buffer, g_buffer, sizeof(g_buffer)); | ~~~~~~~~ ^~~~~~~~ sys-libs/glibc-2.30-r8 (armv7a, but ISA probably does not matter) gcc (Gentoo 9.3.0 p2) 9.3.0 --- daemon/procfs.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/daemon/procfs.c b/daemon/procfs.c index 50e72f98..707f0e1f 100644 --- a/daemon/procfs.c +++ b/daemon/procfs.c @@ -39,6 +39,7 @@ #define BUFFER_SIZE 4096 static char g_buffer[BUFFER_SIZE]; +static char g_buffer_readlink[BUFFER_SIZE]; static bool @@ -152,11 +153,11 @@ procfs_get_process_link( return NULL; } - ret = readlink(g_buffer, g_buffer, sizeof(g_buffer)); + ret = readlink(g_buffer, g_buffer_readlink, sizeof(g_buffer_readlink)); if (ret != 0) { - g_buffer[ret] = 0; - buffer_ptr = strdup(g_buffer); + g_buffer_readlink[ret] = 0; + buffer_ptr = strdup(g_buffer_readlink); log_debug("process %llu %s symlink points to \"%s\"", pid, filename, buffer_ptr); } else