NeilBrown: Fix null-dereference in set_member_info

Martin F. Krafft madduck at alioth.debian.org
Tue Oct 27 19:21:51 UTC 2009


Module: mdadm
Branch: upstream
Commit: 2b9aa337af7291d3f141322da96c9f667c99d53c
URL:    http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=2b9aa337af7291d3f141322da96c9f667c99d53c

Author: NeilBrown <neilb at suse.de>
Date:   Thu Oct  1 12:51:04 2009 +1000

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 at 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';




More information about the pkg-mdadm-commits mailing list