<commit_before>From d16de70b76919269561b4e404825f78286ea9a40 Mon Sep 17 00:00:00 2001
From: <NAME> <<EMAIL>>
Date: Mon, 26 Nov 2018 10:31:30 +0800
Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep 17
 00:00:00 2001 From: <NAME> <<EMAIL>> Date: Mon, 6 Nov
 2017 21:39:28 -0600 Subject: [PATCH] RH: warn on invalid regex instead of
 failing

multipath.conf used to allow "*" as a match everything regular expression,
instead of requiring ".*". Instead of erroring when the old style
regular expressions are used, it should print a warning and convert
them.

Signed-off-by: <NAME> <<EMAIL>>

Upstream-Status: Pending

update this patch to new version

Signed-off-by: <NAME> <<EMAIL>>
---
 libmultipath/dict.c   | 29 ++++++++++++++++++++++-------
 libmultipath/parser.c | 13 +++++++++++++
 libmultipath/parser.h |  2 +-
 3 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/libmultipath/dict.c b/libmultipath/dict.c
index a81c051..0689763 100644
--- a/libmultipath/dict.c
+++ b/libmultipath/dict.c
@@ -59,6 +59,21 @@ set_str(vector strvec, void *ptr)
 }
 
 static int
+set_regex(vector strvec, void *ptr)
+{
+       char **str_ptr = (char **)ptr;
+
+       if (*str_ptr)
+               FREE(*str_ptr);
+       *str_ptr = set_regex_value(strvec);
+
+       if (!*str_ptr)
+               return 1;
+
+       return 0;
+}
+
+static int
 set_yes_no(vector strvec, void *ptr)
 {
 	char * buff;
@@ -1346,8 +1361,8 @@ ble_ ## option ## _handler (struct config *conf, vector strvec)		\
 									\
 	if (!conf->option)						\
 		return 1;						\
-									\
-	buff = set_value(strvec);					\
+									\	
+	buff = set_regex_value(strvec);					\
 	if (!buff)							\
 		return 1;						\
 									\
@@ -1363,7 +1378,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
 	if (!conf->option)						\
 		return 1;						\
 									\
-	buff = set_value(strvec);					\
+	buff = set_regex_value(strvec);					\
 	if (!buff)							\
 		return 1;						\
 									\
@@ -1466,16 +1481,16 @@ device_handler(struct config *conf, vector strvec)
 	return 0;
 }
 
-declare_hw_handler(vendor, set_str)
+declare_hw_handler(vendor, set_regex)
 declare_hw_snprint(vendor, print_str)
 
-declare_hw_handler(product, set_str)
+declare_hw_handler(product, set_regex)
 declare_hw_snprint(product, print_str)
 
-declare_hw_handler(revision, set_str)
+declare_hw_handler(revision, set_regex)
 declare_hw_snprint(revision, print_str)
 
-declare_hw_handler(bl_product, set_str)
+declare_hw_handler(bl_product, set_regex)
 declare_hw_snprint(bl_product, print_str)
 
 declare_hw_handler(hwhandler, set_str)
diff --git a/libmultipath/parser.c b/libmultipath/parser.c
index 92ef7cf..0e2cf49 100644
--- a/libmultipath/parser.c
+++ b/libmultipath/parser.c
@@ -384,6 +384,19 @@ set_value(vector strvec)
 	return alloc;
 }
 
+void *
+set_regex_value(vector strvec)
+{
+       char *buff = set_value(strvec);
+
+       if (buff && strcmp("*", buff) == 0) {
+               condlog(0, "Invalid regular expression \"*\" in multipath.conf. Using \".*\"");
+               FREE(buff);
+               return strdup(".*");
+       }
+       return buff;
+}
+
 /* non-recursive configuration stream handler */
 static int kw_level = 0;
 
diff --git a/libmultipath/parser.h b/libmultipath/parser.h
index 62906e9..b6899fc 100644
--- a/libmultipath/parser.h
+++ b/libmultipath/parser.h
@@ -76,7 +76,7 @@ extern int _install_keyword(vector keywords, char *string,
 extern void dump_keywords(vector keydump, int level);
 extern void free_keywords(vector keywords);
 extern vector alloc_strvec(char *string);
-extern void *set_value(vector strvec);
+extern void *set_regex_value(vector strvec);
 extern int process_file(struct config *conf, char *conf_file);
 extern struct keyword * find_keyword(vector keywords, vector v, char * name);
 int snprint_keyword(char *buff, int len, char *fmt, struct keyword *kw,
-- 
2.7.4

<commit_msg>multipath-tools: fix up patch to avoid segfault<commit_after>From 56d65ecb1c6d814929f6ff3159ade09dc203cc83 Mon Sep 17 00:00:00 2001
From: <NAME> <<EMAIL>>
Date: Mon, 26 Nov 2018 10:31:30 +0800
Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep 17
 00:00:00 2001 From: <NAME> <<EMAIL>> Date: Mon, 6 Nov
 2017 21:39:28 -0600 Subject: [PATCH] RH: warn on invalid regex instead of
 failing

multipath.conf used to allow "*" as a match everything regular expression,
instead of requiring ".*". Instead of erroring when the old style
regular expressions are used, it should print a warning and convert
them.

Signed-off-by: <NAME> <<EMAIL>>

Upstream-Status: Pending

update this patch to new version

Signed-off-by: <NAME> <<EMAIL>>

---
 libmultipath/dict.c   | 29 ++++++++++++++++++++++-------
 libmultipath/parser.c | 13 +++++++++++++
 libmultipath/parser.h |  1 +
 3 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/libmultipath/dict.c b/libmultipath/dict.c
index eaad4f1..fb30577 100644
--- a/libmultipath/dict.c
+++ b/libmultipath/dict.c
@@ -59,6 +59,21 @@ set_str(vector strvec, void *ptr)
 }
 
 static int
+set_regex(vector strvec, void *ptr)
+{
+       char **str_ptr = (char **)ptr;
+
+       if (*str_ptr)
+               FREE(*str_ptr);
+       *str_ptr = set_regex_value(strvec);
+
+       if (!*str_ptr)
+               return 1;
+
+       return 0;
+}
+
+static int
 set_yes_no(vector strvec, void *ptr)
 {
 	char * buff;
@@ -1373,8 +1388,8 @@ ble_ ## option ## _handler (struct config *conf, vector strvec)		\
 									\
 	if (!conf->option)						\
 		return 1;						\
-									\
-	buff = set_value(strvec);					\
+									\	
+	buff = set_regex_value(strvec);					\
 	if (!buff)							\
 		return 1;						\
 									\
@@ -1390,7 +1405,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
 	if (!conf->option)						\
 		return 1;						\
 									\
-	buff = set_value(strvec);					\
+	buff = set_regex_value(strvec);					\
 	if (!buff)							\
 		return 1;						\
 									\
@@ -1493,16 +1508,16 @@ device_handler(struct config *conf, vector strvec)
 	return 0;
 }
 
-declare_hw_handler(vendor, set_str)
+declare_hw_handler(vendor, set_regex)
 declare_hw_snprint(vendor, print_str)
 
-declare_hw_handler(product, set_str)
+declare_hw_handler(product, set_regex)
 declare_hw_snprint(product, print_str)
 
-declare_hw_handler(revision, set_str)
+declare_hw_handler(revision, set_regex)
 declare_hw_snprint(revision, print_str)
 
-declare_hw_handler(bl_product, set_str)
+declare_hw_handler(bl_product, set_regex)
 declare_hw_snprint(bl_product, print_str)
 
 declare_hw_handler(hwhandler, set_str)
diff --git a/libmultipath/parser.c b/libmultipath/parser.c
index 92ef7cf..0e2cf49 100644
--- a/libmultipath/parser.c
+++ b/libmultipath/parser.c
@@ -384,6 +384,19 @@ set_value(vector strvec)
 	return alloc;
 }
 
+void *
+set_regex_value(vector strvec)
+{
+       char *buff = set_value(strvec);
+
+       if (buff && strcmp("*", buff) == 0) {
+               condlog(0, "Invalid regular expression \"*\" in multipath.conf. Using \".*\"");
+               FREE(buff);
+               return strdup(".*");
+       }
+       return buff;
+}
+
 /* non-recursive configuration stream handler */
 static int kw_level = 0;
 
diff --git a/libmultipath/parser.h b/libmultipath/parser.h
index 62906e9..b791705 100644
--- a/libmultipath/parser.h
+++ b/libmultipath/parser.h
@@ -77,6 +77,7 @@ extern void dump_keywords(vector keydump, int level);
 extern void free_keywords(vector keywords);
 extern vector alloc_strvec(char *string);
 extern void *set_value(vector strvec);
+extern void *set_regex_value(vector strvec);
 extern int process_file(struct config *conf, char *conf_file);
 extern struct keyword * find_keyword(vector keywords, vector v, char * name);
 int snprint_keyword(char *buff, int len, char *fmt, struct keyword *kw,

{'fraction_non_alphanumeric': 0.144443026668368, 'fraction_numerical': 0.06175832589000893, 'mean_word_length': 3.3471991125901277, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '23167', 'n_tokens_mistral': 3396, 'n_tokens_neox': 2813, 'n_words': 681}