mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 14:59:34 +00:00
2008-05-07 Robert Millan <rmh@aybabtu.com>
* disk/lvm.c (grub_lvm_scan_device): Detect errors in an additional
grub_strstr() call. Correct a few mistakes in failure path handling.
This commit is contained in:
1 parent
b0346e0f43
commit
7f8866edc1
2 files changed
+23
-9
No files matched your search
@@ -1,3 +1,8 @@
|
|||||||
|
2008-05-07 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
|
* disk/lvm.c (grub_lvm_scan_device): Detect errors in an additional
|
||||||
|
grub_strstr() call. Correct a few mistakes in failure path handling.
|
||||||
|
|
||||||
2008-05-06 Robert Millan <rmh@aybabtu.com>
|
2008-05-06 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
* util/update-grub_lib.in (make_system_path_relative_to_its_root):
|
* util/update-grub_lib.in (make_system_path_relative_to_its_root):
|
||||||
|
|||||||
+18
-9
@@ -313,7 +313,10 @@ grub_lvm_scan_device (const char *name)
|
|||||||
grub_memcpy (vgname, p, vgname_len);
|
grub_memcpy (vgname, p, vgname_len);
|
||||||
vgname[vgname_len] = '\0';
|
vgname[vgname_len] = '\0';
|
||||||
|
|
||||||
p = grub_strstr (q, "id = \"") + sizeof ("id = \"") - 1;
|
p = grub_strstr (q, "id = \"");
|
||||||
|
if (p == NULL)
|
||||||
|
goto fail3;
|
||||||
|
p += sizeof ("id = \"") - 1;
|
||||||
grub_memcpy (vg_id, p, GRUB_LVM_ID_STRLEN);
|
grub_memcpy (vg_id, p, GRUB_LVM_ID_STRLEN);
|
||||||
vg_id[GRUB_LVM_ID_STRLEN] = '\0';
|
vg_id[GRUB_LVM_ID_STRLEN] = '\0';
|
||||||
|
|
||||||
@@ -329,16 +332,13 @@ grub_lvm_scan_device (const char *name)
|
|||||||
whole volume group structure. */
|
whole volume group structure. */
|
||||||
vg = grub_malloc (sizeof (*vg));
|
vg = grub_malloc (sizeof (*vg));
|
||||||
if (! vg)
|
if (! vg)
|
||||||
{
|
goto fail3;
|
||||||
grub_free (vgname);
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
vg->name = vgname;
|
vg->name = vgname;
|
||||||
grub_memcpy (vg->id, vg_id, GRUB_LVM_ID_STRLEN+1);
|
grub_memcpy (vg->id, vg_id, GRUB_LVM_ID_STRLEN+1);
|
||||||
|
|
||||||
vg->extent_size = grub_lvm_getvalue (&p, "extent_size = ");
|
vg->extent_size = grub_lvm_getvalue (&p, "extent_size = ");
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
goto fail2;
|
goto fail4;
|
||||||
|
|
||||||
vg->lvs = NULL;
|
vg->lvs = NULL;
|
||||||
vg->pvs = NULL;
|
vg->pvs = NULL;
|
||||||
@@ -390,7 +390,7 @@ grub_lvm_scan_device (const char *name)
|
|||||||
pvs_fail:
|
pvs_fail:
|
||||||
grub_free (pv->name);
|
grub_free (pv->name);
|
||||||
grub_free (pv);
|
grub_free (pv);
|
||||||
goto fail2;
|
goto fail4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ grub_lvm_scan_device (const char *name)
|
|||||||
lvs_segment_fail2:
|
lvs_segment_fail2:
|
||||||
grub_free (seg->stripes);
|
grub_free (seg->stripes);
|
||||||
lvs_segment_fail:
|
lvs_segment_fail:
|
||||||
goto fail2;
|
goto fail4;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv->number = lv_count++;
|
lv->number = lv_count++;
|
||||||
@@ -527,7 +527,7 @@ grub_lvm_scan_device (const char *name)
|
|||||||
lvs_fail:
|
lvs_fail:
|
||||||
grub_free (lv->name);
|
grub_free (lv->name);
|
||||||
grub_free (lv);
|
grub_free (lv);
|
||||||
goto fail2;
|
goto fail4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -548,6 +548,15 @@ grub_lvm_scan_device (const char *name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
goto fail2;
|
||||||
|
|
||||||
|
/* Failure path. */
|
||||||
|
fail4:
|
||||||
|
grub_free (vg);
|
||||||
|
fail3:
|
||||||
|
grub_free (vgname);
|
||||||
|
|
||||||
|
/* Normal exit path. */
|
||||||
fail2:
|
fail2:
|
||||||
grub_free (metadatabuf);
|
grub_free (metadatabuf);
|
||||||
fail:
|
fail:
|
||||||
|
|||||||
Reference in new issue
Block a user