summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2011-09-22 09:02:21 -0700
committerWayne Davison <wayned@samba.org>2011-09-22 09:02:21 -0700
commit510c5ab7ff0c6b2d0d8794e285259238234c4b96 (patch)
treec06881730b49545faba7e91dca6f390a666b154f
parent033697d96db0d28fe7b68a191665a8db80375bdb (diff)
downloadrsync-510c5ab7ff0c6b2d0d8794e285259238234c4b96.tar.gz
Fix xattr memory leak. Fixes bug 8475.
-rw-r--r--xattrs.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/xattrs.c b/xattrs.c
index 7b5c1b1d..d4c3c3b3 100644
--- a/xattrs.c
+++ b/xattrs.c
@@ -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;
}
}