File 0002-Fix-null-dereference-in-set_member_info.patch of Package mdadm

From 2b9aa337af7291d3f141322da96c9f667c99d53c Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@suse.de>
Date: Thu, 1 Oct 2009 12:51:04 +1000
Subject: [PATCH 2/2] Fix null-dereference in set_member_info

set_member_info would try to dereference ->metadata_version, without
checking that it isn't NULL.

Signed-off-by: NeilBrown <neilb@suse.de>
---
 mapfile.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/mapfile.c b/mapfile.c
index a3038be..ed59db5 100644
--- a/mapfile.c
+++ b/mapfile.c
@@ -303,19 +303,22 @@ struct map_ent *map_by_name(struct map_ent **map, char *name)
  */
 static void set_member_info(struct supertype *st, struct mdstat_ent *ent)
 {
-	char version[strlen(ent->metadata_version)+1];
 
 	st->subarray[0] = '\0';
 
-	if (strncmp(ent->metadata_version, "external:", 9) != 0)
+	if (ent->metadata_version == NULL ||
+	    strncmp(ent->metadata_version, "external:", 9) != 0)
 		return;
 
-	strcpy(version, ent->metadata_version);
-
-	if (is_subarray(&version[9])) {
-		char *subarray = strrchr(version, '/');
+	if (is_subarray(&ent->metadata_version[9])) {
+		char version[strlen(ent->metadata_version)+1];
+		char *subarray;
 		char *name = &version[10];
 
+		strcpy(version, ent->metadata_version);
+		subarray = strrchr(version, '/');
+		name = &version[10];
+
 		if (!subarray)
 			return;
 		*subarray++ = '\0';
-- 
1.6.3.3
openSUSE Build Service is sponsored by