xfs
[Top] [All Lists]

libattr - severe memory leaks from attr_copy_file()

To: xfs@xxxxxxxxxxx
Subject: libattr - severe memory leaks from attr_copy_file()
From: Zdenek Prikryl <zprikryl@xxxxxxxxxx>
Date: Tue, 17 Feb 2009 12:50:18 +0100
User-agent: Thunderbird 2.0.0.19 (X11/20090105)
Hello,
libattr's function attr_copy_file() seems to be producing severe memory leaks.
I'm sending a patch which removes sources of leaks.

Regards.

-- 
Zdenek Prikryl <zprikryl@xxxxxxxxxx>

diff -up attr-2.4.43/libattr/attr_copy_action.c.leak 
attr-2.4.43/libattr/attr_copy_action.c
--- attr-2.4.43/libattr/attr_copy_action.c.leak 2008-06-30 07:22:50.000000000 
+0200
+++ attr-2.4.43/libattr/attr_copy_action.c      2009-02-17 09:50:38.000000000 
+0100
@@ -53,7 +53,7 @@ free_attr_actions(void)
 static int
 attr_parse_attr_conf(struct error_context *ctx)
 {
-       char *text, *t;
+       char *text = NULL, *t;
        size_t size_guess = 4096, len;
        FILE *file;
        char *pattern = NULL;
@@ -64,15 +64,16 @@ attr_parse_attr_conf(struct error_contex
                return 0;
 
 repeat:
-       text = malloc(size_guess + 1);
-       if (!text)
-               goto fail;
-
        if ((file = fopen(ATTR_CONF, "r")) == NULL) {
                if (errno == ENOENT)
                        return 0;
                goto fail;
        }
+
+       text = malloc(size_guess + 1);
+       if (!text)
+               goto fail;
+
        len = fread(text, 1, size_guess, file);
        if (ferror(file))
                goto fail;
@@ -140,10 +141,12 @@ fail:
                quote_free (ctx, q);
        }
 
-       free(pattern);
+       if (pattern)
+               free(pattern);
        if (file)
                fclose(file);
-       free(text);
+       if (text)
+               free(text);
        free_attr_actions();
        return -1;
 }
<Prev in Thread] Current Thread [Next in Thread>