]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix bug #1874 crash with xattr support on a BTRFS filesystem
authorMarco van Wieringen <mvw@planets.elm.net>
Fri, 1 Jun 2012 09:21:32 +0000 (11:21 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:50:40 +0000 (14:50 +0200)
Add some extra safeguards that structure are always initialized
the way we think they should be and a special code path doesn't
give freeing failures on non allocated memory.

bacula/src/filed/xattr.c

index 40a5127d9a8519c5369a526d059dc97cf464cdb1..b6884ea49bb98fd5b3960bcf787275d752b817bb 100644 (file)
@@ -448,6 +448,7 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
        * Each xattr valuepair starts with a magic so we can parse it easier.
        */
       current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+      memset(current_xattr, 0, sizeof(xattr_t));
       current_xattr->magic = XATTR_MAGIC;
       expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -739,6 +740,7 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
              * Each xattr valuepair starts with a magic so we can parse it easier.
              */
             current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+            memset(current_xattr, 0, sizeof(xattr_t));
             current_xattr->magic = XATTR_MAGIC;
             expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -1197,6 +1199,7 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
        * Each xattr valuepair starts with a magic so we can parse it easier.
        */
       current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+      memset(current_xattr, 0, sizeof(xattr_t));
       current_xattr->magic = XATTR_MAGIC;
       expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -1655,6 +1658,7 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
           * Each xattr valuepair starts with a magic so we can parse it easier.
           */
          current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+         memset(current_xattr, 0, sizeof(xattr_t));
          current_xattr->magic = XATTR_MAGIC;
          expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -2082,6 +2086,7 @@ static bxattr_exit_code tru64_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
        * Each xattr valuepair starts with a magic so we can parse it easier.
        */
       current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+      memset(current_xattr, 0, sizeof(xattr_t));
       current_xattr->magic = XATTR_MAGIC;
       expected_serialize_len += sizeof(current_xattr->magic);