]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix 2 rather big bugs in the xattr and acl code and fix a small
authorMarco van Wieringen <mvw@planets.elm.net>
Tue, 23 Jun 2009 19:13:29 +0000 (19:13 +0000)
committerMarco van Wieringen <mvw@planets.elm.net>
Tue, 23 Jun 2009 19:13:29 +0000 (19:13 +0000)
memory leak on a particular code path for Linux xattr/acl handling.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8923 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/filed/acl.c
bacula/src/filed/xattr.c
bacula/technotes

index 1e43df13e74d52b4e336458884fe8a71a5e1cd1f..9e76b2404527a76dab743b9ca851fe928326c273 100644 (file)
@@ -533,12 +533,12 @@ static bool darwin_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
     */
    if ((jcr->acl_data_len = generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS)) < 0)
       return false;
+#endif
 
    if (jcr->acl_data_len > 0) {
       if (!send_acl_stream(jcr, STREAM_ACL_DARWIN_ACCESS_ACL))
          return false;
    }
-#endif
 
    return true;
 }
index fe43b042339d89f9ea09da8028b16b3fdd43e32c..68b427a756eefc9892e273c3383f101a22a57ca3 100644 (file)
@@ -318,8 +318,11 @@ static bool generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt, int stream)
       bp = strchr(bp, '\0') + 1;
    }
 
-   if (count == 0)
+   if (count == 0) {
+      free(xattr_list);
+
       return true;
+   }
 
    /*
     * Allocate enough room to hold all extended attributes.
@@ -740,6 +743,8 @@ static void add_xattr_link_cache_entry(ino_t inum, char *target)
       strncpy(ptr->target, target, sizeof(ptr->target));
       if (xattr_link_cache_head == NULL)
          xattr_link_cache_head = ptr;
+      if (xattr_link_cache_tail != NULL)
+         xattr_link_cache_tail->next = ptr;
       xattr_link_cache_tail = ptr;
    }
 }
index 07882980eef3466023ef3e2b515b8db616740945..48627f6dab84285ac05bb1842262e90c5c666bae 100644 (file)
@@ -3,6 +3,8 @@
 General:
 
 23Jun09
+mvw  Fix 2 rather big bugs in the xattr and acl code and fix a small
+     memory leak on a particular code path for Linux xattr/acl handling.
 ebl  Update FileSetId when initializing job.
 ebl  Fix compilation problem with message.c
 ebl  Add '*' when volume is online when displaying volume list in restore. Should