[dm-devel] [PATCH 08/33] libmultipath: Do not crash on empty features

Martin Wilck mwilck at suse.com
Tue Feb 28 16:23:04 UTC 2017


From: Hannes Reinecke <hare at suse.de>

When adding to an otherwise empty feature list multipath would
crash as it doesn't check for an empty feature list.


Signed-off-by: Hannes Reinecke <hare at suse.com>
---
 libmultipath/structs.c | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/libmultipath/structs.c b/libmultipath/structs.c
index f36a0552..4419510d 100644
--- a/libmultipath/structs.c
+++ b/libmultipath/structs.c
@@ -506,7 +506,7 @@ void setup_feature(struct multipath *mpp, char *feature)
 
 int add_feature(char **f, char *n)
 {
-	int c = 0, d, l;
+	int c = 0, d, l = 0;
 	char *e, *p, *t;
 
 	if (!f)
@@ -528,18 +528,19 @@ int add_feature(char **f, char *n)
 	}
 
 	/* Check if feature is already present */
-	if (strstr(*f, n))
-		return 0;
-
-	/* Get feature count */
-	c = strtoul(*f, &e, 10);
-	if (*f == e)
-		/* parse error */
-		return 1;
-
-	/* Check if we need to increase feature count space */
-	l = strlen(*f) + strlen(n) + 1;
+	if (*f) {
+		if (strstr(*f, n))
+			return 0;
+
+		/* Get feature count */
+		c = strtoul(*f, &e, 10);
+		if (*f == e)
+			/* parse error */
+			return 1;
 
+		/* Check if we need to increase feature count space */
+		l = strlen(*f) + strlen(n) + 1;
+	}
 	/* Count new features */
 	if ((c % 10) == 9)
 		l++;
@@ -571,7 +572,10 @@ int add_feature(char **f, char *n)
 	snprintf(p, l + 2, "%0d ", c);
 
 	/* Copy the feature string */
-	p = strchr(*f, ' ');
+	p = NULL;
+	if (*f)
+		p = strchr(*f, ' ');
+
 	if (p) {
 		while (*p == ' ')
 			p++;
-- 
2.11.0




More information about the dm-devel mailing list