From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22599 invoked by alias); 11 Aug 2011 19:17:11 -0000 Received: (qmail 22581 invoked by uid 9478); 11 Aug 2011 19:17:11 -0000 Date: Thu, 11 Aug 2011 19:17:00 -0000 Message-ID: <20110811191711.22579.qmail@sourceware.org> From: jbrassow@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2 lib/metadata/raid_manip.c libdm/libdm-dep ... Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2011-08/txt/msg00039.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: jbrassow@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;