diff options
author | Wayne Davison <wayned@samba.org> | 2011-09-22 09:02:21 -0700 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2011-09-22 09:02:21 -0700 |
commit | 510c5ab7ff0c6b2d0d8794e285259238234c4b96 (patch) | |
tree | c06881730b49545faba7e91dca6f390a666b154f | |
parent | 033697d96db0d28fe7b68a191665a8db80375bdb (diff) | |
download | rsync-510c5ab7ff0c6b2d0d8794e285259238234c4b96.tar.gz |
Fix xattr memory leak. Fixes bug 8475.
-rw-r--r-- | xattrs.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -93,11 +93,14 @@ static void rsync_xal_free(item_list *xalp) size_t i; rsync_xa *rxas = xalp->items; + if (!xalp->malloced) + return; + for (i = 0; i < xalp->count; i++) { free(rxas[i].datum); /*free(rxas[i].name);*/ } - xalp->count = 0; + free(xalp->items); } void free_xattr(stat_x *sxp) @@ -772,10 +775,8 @@ void uncache_tmp_xattrs(void) item_list *xattr_start = xattr_item + prior_xattr_count; xattr_item += rsync_xal_l.count; rsync_xal_l.count = prior_xattr_count; - while (xattr_item-- > xattr_start) { + while (xattr_item-- > xattr_start) rsync_xal_free(xattr_item); - free(xattr_item->items); - } prior_xattr_count = (size_t)-1; } } |