Fix null-dereference in set_member_info

set_member_info would try to dereference ->metadata_version, without
checking that it isn't NULL.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2009-10-01 12:51:04 +10:00
parent 0e90271e53
commit 2b9aa337af
1 changed files with 9 additions and 6 deletions

View File

@ -303,19 +303,22 @@ struct map_ent *map_by_name(struct map_ent **map, char *name)
*/
static void set_member_info(struct supertype *st, struct mdstat_ent *ent)
{
char version[strlen(ent->metadata_version)+1];
st->subarray[0] = '\0';
if (strncmp(ent->metadata_version, "external:", 9) != 0)
if (ent->metadata_version == NULL ||
strncmp(ent->metadata_version, "external:", 9) != 0)
return;
strcpy(version, ent->metadata_version);
if (is_subarray(&version[9])) {
char *subarray = strrchr(version, '/');
if (is_subarray(&ent->metadata_version[9])) {
char version[strlen(ent->metadata_version)+1];
char *subarray;
char *name = &version[10];
strcpy(version, ent->metadata_version);
subarray = strrchr(version, '/');
name = &version[10];
if (!subarray)
return;
*subarray++ = '\0';