From: Sami Kerola Date: Thu, 3 May 2018 21:57:57 +0000 (+0100) Subject: lib/canonicalize: fix truncation warning X-Git-Tag: v2.33-rc1~280 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf99940f649959fcc73590c043d28b1ab0d83e1c;p=thirdparty%2Futil-linux.git lib/canonicalize: fix truncation warning lib/canonicalize.c: In function ‘canonicalize_dm_name’: lib/canonicalize.c:42:45: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 244 [-Wformat-truncation=] snprintf(path, sizeof(path), "/dev/mapper/%s", name); Notice that this warnign fix does not improve code enormously. The earlier snprintf() truncation will not happen a bit earlier when fgets() is called. In that sense this change merely makes one easy to silence warning to disappear, and therefore improve change of noticing useful messaging as such crops up. [kzak@redhat.com: - use macro rather than hardcoded string for mapper path] Signed-off-by: Sami Kerola Signed-off-by: Karel Zak --- diff --git a/include/pathnames.h b/include/pathnames.h index 59cc667362..abf0cdee98 100644 --- a/include/pathnames.h +++ b/include/pathnames.h @@ -131,6 +131,8 @@ # define _PATH_DEV "/dev/" #endif +#define _PATH_DEV_MAPPER "/dev/mapper" + #define _PATH_DEV_MEM "/dev/mem" #define _PATH_DEV_LOOP "/dev/loop" diff --git a/lib/canonicalize.c b/lib/canonicalize.c index b600248c71..ef3342b12b 100644 --- a/lib/canonicalize.c +++ b/lib/canonicalize.c @@ -16,6 +16,7 @@ #include #include "canonicalize.h" +#include "pathnames.h" /* * Converts private "dm-N" names to "/dev/mapper/" @@ -27,7 +28,7 @@ char *canonicalize_dm_name(const char *ptname) { FILE *f; size_t sz; - char path[256], name[256], *res = NULL; + char path[256], name[sizeof(path) - sizeof(_PATH_DEV_MAPPER)], *res = NULL; if (!ptname || !*ptname) return NULL; @@ -39,7 +40,7 @@ char *canonicalize_dm_name(const char *ptname) /* read "\n" from sysfs */ if (fgets(name, sizeof(name), f) && (sz = strlen(name)) > 1) { name[sz - 1] = '\0'; - snprintf(path, sizeof(path), "/dev/mapper/%s", name); + snprintf(path, sizeof(path), _PATH_DEV_MAPPER "/%s", name); if (access(path, F_OK) == 0) res = strdup(path);