From 0917a0682e48c4261e47d743725d990f47f6ec95 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Apr 2011 04:54:18 +0000 Subject: Thu Apr 14 04:54:18 UTC 2011 --- testing/mdadm/segfault-3.2.1.patch | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 testing/mdadm/segfault-3.2.1.patch (limited to 'testing/mdadm/segfault-3.2.1.patch') diff --git a/testing/mdadm/segfault-3.2.1.patch b/testing/mdadm/segfault-3.2.1.patch new file mode 100644 index 000000000..6042d86c2 --- /dev/null +++ b/testing/mdadm/segfault-3.2.1.patch @@ -0,0 +1,68 @@ +From 4019ad07013a5d8618b867f724d1c4a13c5cb05d Mon Sep 17 00:00:00 2001 +From: Jonathan Liu +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. + +Signed-off-by: NeilBrown +--- + Monitor.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/Monitor.c b/Monitor.c +index a3ea724..55aebeb 100644 +--- a/Monitor.c ++++ b/Monitor.c +@@ -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); +-- +1.7.2.3 + +From eb28e119b03fd5149886ed516fa4bb006ad3602e Mon Sep 17 00:00:00 2001 +From: NeilBrown +Date: Tue, 5 Apr 2011 09:16:57 +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. + +Reported-by: Eugene +Signed-off-by: NeilBrown +--- + Monitor.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/Monitor.c b/Monitor.c +index 291e465..337785d 100644 +--- a/Monitor.c ++++ b/Monitor.c +@@ -688,7 +688,8 @@ static int add_new_arrays(struct mdstat_ent *mdstat, struct state **statelist, + st->devnum = mse->devnum; + st->percent = -2; + st->expected_spares = -1; +- 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); +-- +1.7.2.3 + -- cgit v1.2.3-54-g00ecf