From: Karel Zak Date: Wed, 27 Mar 2013 15:13:39 +0000 (+0100) Subject: mkfs.cramfs: fix memory leak [coverity scan] X-Git-Tag: v2.23-rc2~94 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=985b351ed8ec1d7ce7aeebca27cc7c88571a5657;p=thirdparty%2Futil-linux.git mkfs.cramfs: fix memory leak [coverity scan] Signed-off-by: Karel Zak --- diff --git a/disk-utils/mkfs.cramfs.c b/disk-utils/mkfs.cramfs.c index 8abc0455dd..94f0c33973 100644 --- a/disk-utils/mkfs.cramfs.c +++ b/disk-utils/mkfs.cramfs.c @@ -144,7 +144,7 @@ usage(int status) { static char * do_mmap(char *path, unsigned int size, unsigned int mode){ int fd; - char *start; + char *start = NULL; if (!size) return NULL; @@ -152,26 +152,31 @@ do_mmap(char *path, unsigned int size, unsigned int mode){ if (S_ISLNK(mode)) { start = xmalloc(size); if (readlink(path, start, size) < 0) { - perror(path); + warn(_("readlink failed: %s"), path); warn_skip = 1; - start = NULL; + goto err; } return start; } fd = open(path, O_RDONLY); if (fd < 0) { - perror(path); + warn(_("open failed: %s"), path); warn_skip = 1; - return NULL; + goto err; } start = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0); - if (-1 == (int) (long) start) + if (-1 == (int) (long) start) { + free(start); + close(fd); err(MKFS_EX_ERROR, "mmap"); + } close(fd); - return start; +err: + free(start); + return NULL; } static void