]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Plug memory leaks in xattr and acl tests.
authorMartin Matuska <martin@matuska.org>
Mon, 3 Apr 2017 12:09:53 +0000 (14:09 +0200)
committerMartin Matuska <martin@matuska.org>
Mon, 3 Apr 2017 12:09:53 +0000 (14:09 +0200)
Detected with libasan on Linux.

libarchive/test/test_xattr_platform.c
tar/test/test_option_acls.c
tar/test/test_option_xattrs.c
test_utils/test_common.h
test_utils/test_main.c

index ebb265edb382cd107f72a54cb016dc614697c64e..df3f81a5b3fd70e0c5526be095767dc7865bc305 100644 (file)
@@ -35,6 +35,7 @@ DEFINE_TEST(test_xattr_platform)
        struct archive_entry *ae;
        const char *name;
        const void *value;
+       void *rvalue;
        size_t size, insize;
        int e, r;
        const char *attrname = "user.libarchive.test";
@@ -95,8 +96,9 @@ DEFINE_TEST(test_xattr_platform)
        assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
 
-       value = getXattr("writetest", attrname, &insize);
+       rvalue = getXattr("writetest", attrname, &insize);
        if (assertEqualInt(insize, strlen(writeval) + 1) != 0)
-               assertEqualMem(value, writeval, insize);
+               assertEqualMem(rvalue, writeval, insize);
+       free(rvalue);
 #endif
 }
index be0db449821a59d32b142f76ec4259b54d39f941..f2d51d661abf63fd9ceff05bbf3da7462ab0e55a 100644 (file)
@@ -360,8 +360,10 @@ compare_acls(const char *path_a, const char *path_b)
        if (richacl_a != NULL) {
                richacl_b = richacl_get_file(path_b);
                if (richacl_b == NULL &&
-                   (errno == ENODATA || errno == ENOTSUP || errno == ENOSYS))
+                   (errno == ENODATA || errno == ENOTSUP || errno == ENOSYS)) {
+                       richacl_free(richacl_a);
                        return (0);
+               }
                failure("richacl_get_file() error: %s (%s)", path_b,
                    strerror(errno));
                if (assert(richacl_b != NULL) == 0) {
index 5095ce336d6cb6f1d4dcc25864a53f638a067fcc..bce8a94e4dd2b631a0c6d59d33d13f998d2e4ee6 100644 (file)
@@ -33,7 +33,7 @@ DEFINE_TEST(test_option_xattrs)
 
        const char *testattr = "user.libarchive.test";
        const char *testval = "testval";
-       const void *readval;
+       void *readval;
        size_t size;
        int r;
 
@@ -62,6 +62,7 @@ DEFINE_TEST(test_option_xattrs)
        readval = getXattr("xattrs_xattrs/f", testattr, &size);
        if(assertEqualInt(size, strlen(testval) + 1) != 0)
                assertEqualMem(readval, testval, size);
+       free(readval);
 
        /* Extract xattrs without xattrs */
        assertMakeDir("xattrs_noxattrs", 0755);
index fa726bff1fded30ae507a4f30109c551508a8b76..1425dd84b7df6a1071971c1422fe2bc56f13ecf9 100644 (file)
@@ -348,7 +348,7 @@ int canNodump(void);
 int setTestAcl(const char *path);
 
 /* Get extended attribute */
-const void *getXattr(const char *, const char *, size_t *);
+void *getXattr(const char *, const char *, size_t *);
 
 /* Set extended attribute */
 int setXattr(const char *, const char *, const void *, size_t);
index 36dfc82fa08f8d586d801dd7b32591d08384d525..d74045934bec7a209d57ee050da988af881d550b 100644 (file)
@@ -2451,8 +2451,8 @@ canNodump(void)
        return (0);
 }
 
-/* Get extended attribute from a path */
-const void *
+/* Get extended attribute value from a path */
+void *
 getXattr(const char *path, const char *name, size_t *sizep)
 { 
        void *value = NULL;