log, conf, tap: Define die() as err() plus exit(), drop cppcheck workarounds

If we define die() as a variadic macro, passing __VA_ARGS__ to err(),
and calling exit() outside err() itself, we can drop the workarounds
introduced in commit 36f0199f6e ("conf, tap: Silence two false
positive invalidFunctionArg from cppcheck").

Suggested-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Stefano Brivio 2023-02-27 04:06:19 +01:00
parent fb05a71378
commit d2df763232
4 changed files with 12 additions and 18 deletions

3
conf.c
View file

@ -1064,9 +1064,6 @@ static void conf_ugid(char *runas, uid_t *uid, gid_t *gid)
if ((fd = open("/proc/self/uid_map", O_RDONLY | O_CLOEXEC)) < 0) { if ((fd = open("/proc/self/uid_map", O_RDONLY | O_CLOEXEC)) < 0) {
die("Can't determine if we're in init namespace: %s", die("Can't determine if we're in init namespace: %s",
strerror(errno)); strerror(errno));
/* Silence cppcheck's invalidFunctionArg for 'fd' in read() */
return;
} }
if (read(fd, buf, BUFSIZ) != sizeof(root_uid_map) || if (read(fd, buf, BUFSIZ) != sizeof(root_uid_map) ||

14
log.c
View file

@ -46,7 +46,7 @@ int log_trace; /* --trace mode enabled */
#define BEFORE_DAEMON (setlogmask(0) == LOG_MASK(LOG_EMERG)) #define BEFORE_DAEMON (setlogmask(0) == LOG_MASK(LOG_EMERG))
#define logfn(name, level, doexit) \ #define logfn(name, level) \
void name(const char *format, ...) { \ void name(const char *format, ...) { \
struct timespec tp; \ struct timespec tp; \
va_list args; \ va_list args; \
@ -75,9 +75,6 @@ void name(const char *format, ...) { \
if (format[strlen(format)] != '\n') \ if (format[strlen(format)] != '\n') \
fprintf(stderr, "\n"); \ fprintf(stderr, "\n"); \
} \ } \
\
if (doexit) \
exit(EXIT_FAILURE); \
} }
/* Prefixes for log file messages, indexed by priority */ /* Prefixes for log file messages, indexed by priority */
@ -90,11 +87,10 @@ const char *logfile_prefix[] = {
" ", /* LOG_DEBUG */ " ", /* LOG_DEBUG */
}; };
logfn(die, LOG_ERR, 1) logfn(err, LOG_ERR)
logfn(err, LOG_ERR, 0) logfn(warn, LOG_WARNING)
logfn(warn, LOG_WARNING, 0) logfn(info, LOG_INFO)
logfn(info, LOG_INFO, 0) logfn(debug,LOG_DEBUG)
logfn(debug,LOG_DEBUG, 0)
/** /**
* trace_init() - Set log_trace depending on trace (debug) mode * trace_init() - Set log_trace depending on trace (debug) mode

7
log.h
View file

@ -10,12 +10,17 @@
#define LOGFILE_CUT_RATIO 30 /* When full, cut ~30% size */ #define LOGFILE_CUT_RATIO 30 /* When full, cut ~30% size */
#define LOGFILE_SIZE_MIN (5UL * MAX(BUFSIZ, PAGE_SIZE)) #define LOGFILE_SIZE_MIN (5UL * MAX(BUFSIZ, PAGE_SIZE))
void die(const char *format, ...);
void err(const char *format, ...); void err(const char *format, ...);
void warn(const char *format, ...); void warn(const char *format, ...);
void info(const char *format, ...); void info(const char *format, ...);
void debug(const char *format, ...); void debug(const char *format, ...);
#define die(...) \
do { \
err(__VA_ARGS__); \
exit(EXIT_FAILURE); \
} while (0)
extern int log_trace; extern int log_trace;
void trace_init(int enable); void trace_init(int enable);
#define trace(...) \ #define trace(...) \

6
tap.c
View file

@ -1037,13 +1037,9 @@ static void tap_sock_unix_init(struct ctx *c)
snprintf(path, UNIX_PATH_MAX - 1, UNIX_SOCK_PATH, i); snprintf(path, UNIX_PATH_MAX - 1, UNIX_SOCK_PATH, i);
ex = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0); ex = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0);
if (ex < 0) { if (ex < 0)
die("UNIX domain socket check: %s", strerror(errno)); die("UNIX domain socket check: %s", strerror(errno));
/* Silence cppcheck's invalidFunctionArg for 'ex' */
return;
}
ret = connect(ex, (const struct sockaddr *)&addr, sizeof(addr)); ret = connect(ex, (const struct sockaddr *)&addr, sizeof(addr));
if (!ret || (errno != ENOENT && errno != ECONNREFUSED && if (!ret || (errno != ENOENT && errno != ECONNREFUSED &&
errno != EACCES)) { errno != EACCES)) {