summaryrefslogtreecommitdiffstats
path: root/super-intel.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-04-12 00:58:27 -0700
committerDan Williams <dan.j.williams@intel.com>2009-04-12 00:58:27 -0700
commit1f45a8ad2083d6b9de6e37ae46e8ac957694d0f8 (patch)
tree5300cfc969b0f7ecb6fe24392c8057b7416d02c5 /super-intel.c
parent9d84c8eac256345126f10628e4f13c07f7eece17 (diff)
downloadmdadm-1f45a8ad2083d6b9de6e37ae46e8ac957694d0f8.tar.gz
mdadm-1f45a8ad2083d6b9de6e37ae46e8ac957694d0f8.tar.xz
mdadm-1f45a8ad2083d6b9de6e37ae46e8ac957694d0f8.zip
imsm: ensure mpb buffer is zeroed
Don't leak unitialized data into the mpb. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/super-intel.c b/super-intel.c
index 328a335..4754b25 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -1746,7 +1746,8 @@ static int parse_raid_devices(struct intel_super *super)
if (posix_memalign(&buf, 512, len) != 0)
return 1;
- memcpy(buf, super->buf, len);
+ memcpy(buf, super->buf, super->len);
+ memset(buf + super->len, 0, len - super->len);
free(super->buf);
super->buf = buf;
super->len = len;
@@ -4382,7 +4383,9 @@ static void imsm_prepare_update(struct supertype *st,
free(super->next_buf);
super->next_len = buf_len;
- if (posix_memalign(&super->next_buf, 512, buf_len) != 0)
+ if (posix_memalign(&super->next_buf, 512, buf_len) == 0)
+ memset(super->next_buf, 0, buf_len);
+ else
super->next_buf = NULL;
}
}