1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-30 17:18:21 +03:00

Fix resource leak of file handle

Introduces when added dm_device_get_name.
Close file handle in all error paths.
This commit is contained in:
Zdenek Kabelac 2012-01-25 21:47:18 +00:00
parent e6771e50a9
commit 0e6cacbbb6

View File

@ -1189,7 +1189,8 @@ const char *dm_uuid_prefix(void)
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 @@ static int _sysfs_get_dm_name(uint32_t major, uint32_t minor, char *buf, size_t
}
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)