From: Philippe Proulx Date: Tue, 9 Jul 2019 12:25:53 +0000 (-0400) Subject: lib/lib-logging.c: fix GCC warning: check return value of snprintf() X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=b293c529e6c191632ac97b50b8a7811c5b480ed9 lib/lib-logging.c: fix GCC warning: check return value of snprintf() This patch fixes this GCC warning: lib-logging.c: In function ‘format_component’: lib-logging.c:110:44: error: ‘%s’ directive output may be truncated writing 10 bytes into a region of size between 0 and 127 [-Werror=format-truncation=] snprintf(tmp_prefix, TMP_PREFIX_LEN - 1, "%s%s", \ ^~~~~~ prefix, (_prefix2)); \ ~~~~~~~~~~ lib-logging.c:1013:3: note: in expansion of macro ‘SET_TMP_PREFIX’ SET_TMP_PREFIX("so-handle-"); ^~~~~~~~~~~~~~ lib-logging.c:110:3: note: ‘snprintf’ output between 11 and 138 bytes into a destination of size 127 snprintf(tmp_prefix, TMP_PREFIX_LEN - 1, "%s%s", \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ prefix, (_prefix2)); \ ~~~~~~~~~~~~~~~~~~~ lib-logging.c:1013:3: note: in expansion of macro ‘SET_TMP_PREFIX’ SET_TMP_PREFIX("so-handle-"); ^~~~~~~~~~~~~~ The macro aborts when the return value is unexpected, but this will never happen as we control the prefixes internally. Boosting the buffer's size to 128 just in case. Signed-off-by: Philippe Proulx Change-Id: I6cbb43de3c9ae03b5d85074d1698069084659c3b Reviewed-on: https://review.lttng.org/c/babeltrace/+/1658 --- diff --git a/src/lib/lib-logging.c b/src/lib/lib-logging.c index c9c8249b..16cd09b9 100644 --- a/src/lib/lib-logging.c +++ b/src/lib/lib-logging.c @@ -104,11 +104,17 @@ static __thread char lib_logging_buf[LIB_LOGGING_BUF_SIZE]; #define PRFIELD_GSTRING(_expr) PRFIELD((_expr) ? (_expr)->str : NULL) -#define TMP_PREFIX_LEN 64 +#define TMP_PREFIX_LEN 128 #define SET_TMP_PREFIX(_prefix2) \ do { \ - snprintf(tmp_prefix, TMP_PREFIX_LEN - 1, "%s%s", \ - prefix, (_prefix2)); \ + int snprintf_ret = \ + snprintf(tmp_prefix, TMP_PREFIX_LEN - 1, "%s%s", \ + prefix, (_prefix2)); \ + \ + if (snprintf_ret < 0 || snprintf_ret >= TMP_PREFIX_LEN - 1) { \ + abort(); \ + } \ + \ tmp_prefix[TMP_PREFIX_LEN - 1] = '\0'; \ } while (0)