75 lines
2.3 KiB
Diff
75 lines
2.3 KiB
Diff
|
|
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
|
|||
|
|
|