From: NeilBrown Date: Wed, 9 Apr 2014 06:59:49 +0000 (+1000) Subject: DDF: avoid ref outside array in getinfo_super_ddf_bvd X-Git-Tag: mdadm-3.3.1~38 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=commitdiff_plain;h=0d255ff84e2f679a9c8ad190b5c3238e62fca5cb DDF: avoid ref outside array in getinfo_super_ddf_bvd As we are range-checking 'cd', there is a chance that it is not in-range. In that case we should include all array indexes with 'cd' inside the range-tested branch. Signed-off-by: NeilBrown --- diff --git a/super-ddf.c b/super-ddf.c index f982460b..414bdef2 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -2074,11 +2074,11 @@ static void getinfo_super_ddf_bvd(struct supertype *st, struct mdinfo *info, cha info->component_size = vc->block_sizes[cd]; else info->component_size = be64_to_cpu(conf->blocks); - } - for (dl = ddf->dlist; dl ; dl = dl->next) - if (be32_eq(dl->disk.refnum, conf->phys_refnum[cd])) - break; + for (dl = ddf->dlist; dl ; dl = dl->next) + if (be32_eq(dl->disk.refnum, conf->phys_refnum[cd])) + break; + } info->disk.major = 0; info->disk.minor = 0;