From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23517 invoked by alias); 30 Apr 2010 12:37:08 -0000 Received: (qmail 23499 invoked by uid 9737); 30 Apr 2010 12:37:07 -0000 Date: Fri, 30 Apr 2010 12:37:00 -0000 Message-ID: <20100430123707.23496.qmail@sourceware.org> From: zkabelac@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2 ./WHATS_NEW lib/commands/toolcontext.c 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: 2010-04/txt/msg00147.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: zkabelac@sourceware.org 2010-04-30 12:37:05 Modified files: . : WHATS_NEW lib/commands : toolcontext.c Log message: Release pools for regex if there is error during processing (fixes error messages about unreleased pools). Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1543&r2=1.1544 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/commands/toolcontext.c.diff?cvsroot=lvm2&r1=1.94&r2=1.95 --- LVM2/WHATS_NEW 2010/04/30 12:31:32 1.1543 +++ LVM2/WHATS_NEW 2010/04/30 12:37:04 1.1544 @@ -1,5 +1,6 @@ Version 2.02.64 - ================================= + Fix memory leak for invalid regex pattern input. Display invalid regex pattern for filter configuration in case of error. Remove no-longer-used arg_ptr_value. Fix -M and --type to use strings not pointers that change on config refresh. --- LVM2/lib/commands/toolcontext.c 2010/04/29 01:38:14 1.94 +++ LVM2/lib/commands/toolcontext.c 2010/04/30 12:37:05 1.95 @@ -639,14 +639,14 @@ else if (!(filters[nr_filt++] = regex_filter_create(cn->v))) { log_error("Failed to create regex device filter"); - return NULL; + goto err; } /* device type filter. Required. */ cn = find_config_tree_node(cmd, "devices/types"); if (!(filters[nr_filt++] = lvm_type_filter_create(cmd->proc_dir, cn))) { log_error("Failed to create lvm type filter"); - return NULL; + goto err; } /* md component filter. Optional, non-critical. */ @@ -660,6 +660,11 @@ /* Only build a composite filter if we really need it. */ return (nr_filt == 1) ? filters[0] : composite_filter_create(nr_filt, filters); +err: + nr_filt--; /* skip NULL */ + while (nr_filt-- > 0) + filters[nr_filt]->destroy(filters[nr_filt]); + return NULL; } static int _init_filters(struct cmd_context *cmd, unsigned load_persistent_cache)