From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29672 invoked by alias); 25 Jan 2012 21:47:20 -0000 Received: (qmail 29655 invoked by uid 9737); 25 Jan 2012 21:47:18 -0000 Date: Wed, 25 Jan 2012 21:47:00 -0000 Message-ID: <20120125214718.29653.qmail@sourceware.org> From: zkabelac@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/libdm libdm-common.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: 2012-01/txt/msg00088.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: zkabelac@sourceware.org 2012-01-25 21:47:18 Modified files: libdm : libdm-common.c Log message: Fix resource leak of file handle Introduces when added dm_device_get_name. Close file handle in all error paths. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-common.c.diff?cvsroot=lvm2&r1=1.133&r2=1.134 --- LVM2/libdm/libdm-common.c 2012/01/17 14:36:58 1.133 +++ LVM2/libdm/libdm-common.c 2012/01/25 21:47:18 1.134 @@ -1189,7 +1189,8 @@ static int _sysfs_get_dm_name(uint32_t major, uint32_t minor, char *buf, size_t buf_size) { char *sysfs_path, *temp_buf; - FILE *fp; + FILE *fp = NULL; + int r = 0; if (!(sysfs_path = dm_malloc(PATH_MAX)) || !(temp_buf = dm_malloc(PATH_MAX))) { @@ -1219,23 +1220,21 @@ } temp_buf[strlen(temp_buf) - 1] = '\0'; - if (fclose(fp)) - log_sys_error("fclose", sysfs_path); - if (buf_size < strlen(temp_buf) + 1) { log_error("_sysfs_get_dm_name: supplied buffer too small"); goto error; } strncpy(buf, temp_buf, buf_size); - dm_free(sysfs_path); - dm_free(temp_buf); - return 1; - + r = 1; error: + if (fp && fclose(fp)) + log_sys_error("fclose", sysfs_path); + dm_free(sysfs_path); dm_free(temp_buf); - return 0; + + return r; } static int _sysfs_get_kernel_name(uint32_t major, uint32_t minor, char *buf, size_t buf_size)