Date: Wednesday, April 13, 2011 @ 03:07:09
  Author: tpowa
Revision: 119650

upgpkg: mdadm 3.2.1-2
fix segfaults in mdadm monitor mode

Added:
  mdadm/trunk/segfault-3.2.1.patch
Modified:
  mdadm/trunk/PKGBUILD

----------------------+
 PKGBUILD             |   22 ++++++++++-----
 segfault-3.2.1.patch |   68 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+), 7 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2011-04-13 04:54:21 UTC (rev 119649)
+++ PKGBUILD    2011-04-13 07:07:09 UTC (rev 119650)
@@ -3,7 +3,7 @@
 # Contributor: Judd Vinet <[email protected]>
 pkgname=mdadm
 pkgver=3.2.1
-pkgrel=1
+pkgrel=2
 pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as 
Software RAID"
 arch=(i686 x86_64)
 license=('GPL')
@@ -16,17 +16,14 @@
         mdadm 
         mdadm.conf 
         mdadm_install
-        mdadm_hook)
+        mdadm_hook
+        segfault-3.2.1.patch)
 install=mdadm.install
 replaces=('raidtools')
-md5sums=('d1e2549202bd79d9e99f1498d1109530'
-         '7bff0e506fb6017510c8ec4a01896952'
-         '00cbed931db4f15b6ce49e3e7d433966'
-         '865c3d39e5f5dae58388160b563981f1'
-         '1a3eb63832cecd6550f5b0a21d58cfdb')
 
 build() {
   cd $srcdir/$pkgname-$pkgver
+  patch -Np1 -i ../segfault-3.2.1.patch
   make CXFLAGS="$CFLAGS"
 }
 
@@ -43,3 +40,14 @@
   make MDASSEMBLE_AUTO=1 mdassemble
   install -D -m755 mdassemble $pkgdir/sbin/mdassemble
 }
+md5sums=('5af65c32193fe0aea1aac4c4d44ac383'
+         '7bff0e506fb6017510c8ec4a01896952'
+         '00cbed931db4f15b6ce49e3e7d433966'
+         '865c3d39e5f5dae58388160b563981f1'
+         '1a3eb63832cecd6550f5b0a21d58cfdb')
+md5sums=('d1e2549202bd79d9e99f1498d1109530'
+         '7bff0e506fb6017510c8ec4a01896952'
+         '00cbed931db4f15b6ce49e3e7d433966'
+         '865c3d39e5f5dae58388160b563981f1'
+         '1a3eb63832cecd6550f5b0a21d58cfdb'
+         '2fd25605bd1836a33c689ac442cb73ed')

Added: segfault-3.2.1.patch
===================================================================
--- segfault-3.2.1.patch                                (rev 0)
+++ segfault-3.2.1.patch        2011-04-13 07:07:09 UTC (rev 119650)
@@ -0,0 +1,68 @@
+From 4019ad07013a5d8618b867f724d1c4a13c5cb05d 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.
+
+Signed-off-by: NeilBrown <[email protected]>
+---
+ 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 <[email protected]>
+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 <[email protected]>
+Signed-off-by: NeilBrown <[email protected]>
+---
+ 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
+

Reply via email to