@@ -178,16 +178,21 @@ get_hotplug_device(void)
len = strlen(mapname);
/* Dirname + mapname + \0 */
- if (!(device = (char *)malloc(sizeof(char) * (off + len + 1))))
+ if (!(device = (char *)malloc(sizeof(char) * (off + len + 1)))) {
+ free(mapname);
return NULL;
+ }
/* Create new device name. */
snprintf(device, off + 1, "%s", devname);
snprintf(device + off, len + 1, "%s", mapname);
- if (strlen(device) != (off + len))
+ if (strlen(device) != (off + len)) {
+ free(device);
+ free(mapname);
return NULL;
-
+ }
+ free(mapname);
return device;
}
We allocate a string for 'device', but never free it on error. And the string 'mapname' is never freed at all. Found by coverity. Signed-off-by: Hannes Reinecke <hare@suse.com> --- kpartx/kpartx.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)