util-linux/lib-canonicalize-fix-truncation-warning.patch

75 lines
2.3 KiB
Diff
Raw Normal View History

2019-09-30 11:19:16 -04:00
From bf99940f649959fcc73590c043d28b1ab0d83e1c Mon Sep 17 00:00:00 2001
From: Sami Kerola <kerolasa@iki.fi>
Date: Thu, 3 May 2018 22:57:57 +0100
Subject: [PATCH 103/686] lib/canonicalize: fix truncation warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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 <kerolasa@iki.fi>
Signed-off-by: Karel Zak <kzak@redhat.com>
---
include/pathnames.h | 2 ++
lib/canonicalize.c | 5 +++--
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/include/pathnames.h b/include/pathnames.h
index 59cc667..abf0cde 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 b600248..ef3342b 100644
--- a/lib/canonicalize.c
+++ b/lib/canonicalize.c
@@ -16,6 +16,7 @@
#include <sys/stat.h>
#include "canonicalize.h"
+#include "pathnames.h"
/*
* Converts private "dm-N" names to "/dev/mapper/<name>"
@@ -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 "<name>\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);
--
1.8.3.1