On Thu, Feb 16, 2023 at 07:22:10PM +0100, Stefano Brivio wrote: > The newly introduced die() calls exit(), but cppcheck doesn't see it > and warns about possibly invalid arguments used after the check which > triggers die(). Add return statements to silence the warnings. > > Signed-off-by: Stefano Brivio Oof, that's super ugly. Any chance that cppcheck will recognize the ((noreturn)) attribute if we added it to die()? > --- > conf.c | 3 +++ > tap.c | 6 +++++- > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/conf.c b/conf.c > index 675d961..5426c9b 100644 > --- a/conf.c > +++ b/conf.c > @@ -1036,6 +1036,9 @@ static void conf_ugid(char *runas, uid_t *uid, gid_t *gid) > if ((fd = open("/proc/self/uid_map", O_RDONLY | O_CLOEXEC)) < 0) { > die("Can't determine if we're in init namespace: %s", > strerror(errno)); > + > + /* Silence cppcheck's invalidFunctionArg for 'fd' in read() */ > + return; > } > > if (read(fd, buf, BUFSIZ) != sizeof(root_uid_map) || > diff --git a/tap.c b/tap.c > index 88eed88..d6f962e 100644 > --- a/tap.c > +++ b/tap.c > @@ -1037,9 +1037,13 @@ static void tap_sock_unix_init(struct ctx *c) > snprintf(path, UNIX_PATH_MAX - 1, UNIX_SOCK_PATH, i); > > ex = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0); > - if (ex < 0) > + if (ex < 0) { > die("UNIX domain socket check: %s", strerror(errno)); > > + /* Silence cppcheck's invalidFunctionArg for 'ex' */ > + return; > + } > + > ret = connect(ex, (const struct sockaddr *)&addr, sizeof(addr)); > if (!ret || (errno != ENOENT && errno != ECONNREFUSED && > errno != EACCES)) { -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson