]> git.neil.brown.name Git - mdadm.git/commitdiff
DDF: ddf_open_new: implement minimal consistency check
authormwilck@arcor.de <mwilck@arcor.de>
Wed, 3 Jul 2013 20:27:46 +0000 (22:27 +0200)
committerNeilBrown <neilb@suse.de>
Mon, 8 Jul 2013 05:28:31 +0000 (15:28 +1000)
Added a minimal consitency check as in imsm_open_new().

Signed-off-by: Martin Wilck <mwilck@arcor.de>
Signed-off-by: NeilBrown <neilb@suse.de>
super-ddf.c

index b3c846d2078ca97b3fb2490d825223ecbaa07aba..ae24bb9fda92257ef85f0dbbf0d194f21332f196 100644 (file)
@@ -3695,8 +3695,14 @@ static int compare_super_ddf(struct supertype *st, struct supertype *tst)
  */
 static int ddf_open_new(struct supertype *c, struct active_array *a, char *inst)
 {
-       dprintf("ddf: open_new %s\n", inst);
-       a->info.container_member = atoi(inst);
+       struct ddf_super *ddf = c->sb;
+       int n = atoi(inst);
+       if (n >= (int)__be16_to_cpu(ddf->virt->populated_vdes)) {
+               pr_err("%s: subarray index %d out of range\n", __func__, n);
+               return -ENODEV;
+       }
+       dprintf("ddf: open_new %d\n", n);
+       a->info.container_member = n;
        return 0;
 }