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
|
||
|