From: Davidlohr Bueso <d...@gnu.org>

When creating the temp file there's a memory and file descriptor leak upon 
error.

Signed-off-by: Davidlohr Bueso <d...@gnu.org>
Signed-off-by: Richard Weinberger <rich...@nod.at>
Reviewed-by: Vitaliy Ivanov <vitaliva...@gmail.com>
---
 arch/um/os-Linux/mem.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/um/os-Linux/mem.c b/arch/um/os-Linux/mem.c
index e696144..62878cf 100644
--- a/arch/um/os-Linux/mem.c
+++ b/arch/um/os-Linux/mem.c
@@ -176,7 +176,7 @@ static int __init make_tempfile(const char *template, char 
**out_tempname,
 
        find_tempdir();
        if ((tempdir == NULL) || (strlen(tempdir) >= MAXPATHLEN))
-               return -1;
+               goto out;
 
        if (template[0] != '/')
                strcpy(tempname, tempdir);
@@ -191,13 +191,15 @@ static int __init make_tempfile(const char *template, 
char **out_tempname,
        }
        if (do_unlink && (unlink(tempname) < 0)) {
                perror("unlink");
-               goto out;
+               goto close;
        }
        if (out_tempname) {
                *out_tempname = tempname;
        } else
                free(tempname);
        return fd;
+close:
+       close(fd);
 out:
        free(tempname);
        return -1;
-- 
1.7.6


------------------------------------------------------------------------------
5 Ways to Improve & Secure Unified Communications
Unified Communications promises greater efficiencies for business. UC can 
improve internal communications as well as offer faster, more efficient ways
to interact with customers and streamline customer service. Learn more!
http://www.accelacomm.com/jaw/sfnl/114/51426253/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to