Skip to contentSkip to conversation

mse->metadata_version segmentation fault

PATCH Jonathan Liu 1 participant 2 messages Apr 12, 2011 MD RAID

lore
Share & tools
lore
#0 lore raw

Hi,

Just wanted to post an additional patch to fix segmentation fault with mdadm that was missed by eb28e119b03fd5149886ed516fa4bb006ad3602e.

Regards,
Jonathan

From e8ed972a1d104ebda80cf253a45cd95d96357a6c Mon Sep 17 00:00:00 2001
From: Jonathan Liu <[email protected]>
Date: Tue, 12 Apr 2011 18:28:01 +1000
Subject: [PATCH] 0.90 array do not report the metadata type in /proc/mdstat,
so we cannot assume that mse->metadata_version is non-NULL.

So add an appropriate check.

Adds an additional check missed by commit eb28e119b03fd5149886ed516fa4bb006ad3602e.

---
 Monitor.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Monitor.c +2 -1
index a3ea724..55aebeb 100644
@@ -577,7 +577,8 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
 			info[i].major = info[i].minor = 0;
 	}
 
-	if (strncmp(mse->metadata_version, "external:", 9) == 0 &&
+	if (mse->metadata_version &&
+	    strncmp(mse->metadata_version, "external:", 9) == 0 &&
 	    is_subarray(mse->metadata_version+9))
 		st->parent_dev =
 			devname2devnum(mse->metadata_version+10);
Signature · 1 line
1.7.4.4
#1 lore raw
Quoted 1 line · Jonathan Liu

Just wanted to post an additional patch to fix segmentation fault with mdadm that was missed by eb28e119b03fd5149886ed516fa4bb006ad3602e.

Slightly better formatted commit patch attached.

Regards,
Jonathan

From 2dce5f9292bba3cfe1cd89408114087b5df7638f Mon Sep 17 00:00:00 2001
From: Jonathan Liu <[email protected]>
Date: Tue, 12 Apr 2011 18:28:01 +1000
Subject: [PATCH] Monitor: avoid NULL dereference with 0.90 metadata

0.90 array do not report the metadata type in /proc/mdstat, so we cannot assume that mse->metadata_version is non-NULL.

So add an appropriate check.

This adds an additional check missed by commit
eb28e119b03fd5149886ed516fa4bb006ad3602e.

---
 Monitor.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Monitor.c +2 -1
index a3ea724..55aebeb 100644
@@ -577,7 +577,8 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
 			info[i].major = info[i].minor = 0;
 	}
 
-	if (strncmp(mse->metadata_version, "external:", 9) == 0 &&
+	if (mse->metadata_version &&
+	    strncmp(mse->metadata_version, "external:", 9) == 0 &&
 	    is_subarray(mse->metadata_version+9))
 		st->parent_dev =
 			devname2devnum(mse->metadata_version+10);
Signature · 1 line
1.7.4.4