[lvm-devel] LVM2 lib/metadata/raid_manip.c libdm/libdm-dep ...
jbrassow at sourceware.org
jbrassow at sourceware.org
Thu Aug 11 19:17:11 UTC 2011
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: jbrassow at sourceware.org 2011-08-11 19:17:10
Modified files:
lib/metadata : raid_manip.c
libdm : libdm-deptree.c
Log message:
Add some log_error msg's and fix potential segfault
Thanks to kabi for spotting these - especially the possibility for
segfault if a loop runs all the way through without finding a match.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/raid_manip.c.diff?cvsroot=lvm2&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-deptree.c.diff?cvsroot=lvm2&r1=1.103&r2=1.104
--- LVM2/lib/metadata/raid_manip.c 2011/08/11 18:24:41 1.1
+++ LVM2/lib/metadata/raid_manip.c 2011/08/11 19:17:10 1.2
@@ -179,16 +179,20 @@
/* Alter rmeta name */
shift_name = dm_pool_strdup(cmd->mem, seg_metalv(seg, s)->name);
- if (!shift_name)
- return_0;
+ if (!shift_name) {
+ log_error("Memory allocation failed.");
+ return 0;
+ }
len = strlen(shift_name) - 1;
shift_name[len] -= missing;
seg_metalv(seg, s)->name = shift_name;
/* Alter rimage name */
shift_name = dm_pool_strdup(cmd->mem, seg_lv(seg, s)->name);
- if (!shift_name)
- return_0;
+ if (!shift_name) {
+ log_error("Memory allocation failed.");
+ return 0;
+ }
len = strlen(shift_name) - 1;
shift_name[len] -= missing;
seg_lv(seg, s)->name = shift_name;
--- LVM2/libdm/libdm-deptree.c 2011/08/02 22:07:23 1.103
+++ LVM2/libdm/libdm-deptree.c 2011/08/11 19:17:10 1.104
@@ -2356,6 +2356,9 @@
dm_segtypes[i].type, size)))
return_0;
+ if (!seg)
+ return_0;
+
seg->region_size = region_size;
seg->stripe_size = stripe_size;
seg->area_count = 0;
More information about the lvm-devel
mailing list