42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Enzo Matsumiya <ematsumiya@suse.de>
|
|
Date: Fri, 7 Feb 2020 11:45:25 -0300
|
|
Subject: [PATCH] libmultipath: fix files read from config_dir
|
|
|
|
If config_dir contains a file named, for example, "some.conf.backup", this file
|
|
will still be loaded by multipath because process_config_dir()
|
|
(libmultipath/config.c) uses strstr() to check for the ".conf" extension, but
|
|
that doesn't guarantee that ".conf" is at the end of the filename.
|
|
|
|
This patch will make sure that only files ending in ".conf" are loaded from
|
|
config_dir.
|
|
|
|
This is to comply with config_dir entry description in man 5 multipath.conf.
|
|
|
|
Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmultipath/config.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
|
index 2c32acf7..791d16a1 100644
|
|
--- a/libmultipath/config.c
|
|
+++ b/libmultipath/config.c
|
|
@@ -684,8 +684,11 @@ process_config_dir(struct config *conf, vector keywords, char *dir)
|
|
sr.n = n;
|
|
pthread_cleanup_push_cast(free_scandir_result, &sr);
|
|
for (i = 0; i < n; i++) {
|
|
- if (!strstr(namelist[i]->d_name, ".conf"))
|
|
+ char *ext = strrchr(namelist[i]->d_name, '.');
|
|
+
|
|
+ if (!ext || strcmp(ext, ".conf"))
|
|
continue;
|
|
+
|
|
old_hwtable_size = VECTOR_SIZE(conf->hwtable);
|
|
snprintf(path, LINE_MAX, "%s/%s", dir, namelist[i]->d_name);
|
|
path[LINE_MAX-1] = '\0';
|
|
--
|
|
2.17.2
|
|
|