Blame SOURCES/0022-libmultipath-fix-files-read-from-config_dir.patch

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