From: Wayne Davison Date: Thu, 22 Sep 2011 16:02:21 +0000 (-0700) Subject: Fix xattr memory leak. Fixes bug 8475. X-Git-Tag: v3.1.0pre1~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15df927ae26ff0c0d2e31f2245ce5848346084a4;p=thirdparty%2Frsync.git Fix xattr memory leak. Fixes bug 8475. --- diff --git a/xattrs.c b/xattrs.c index 3a7cb25b..52c33cda 100644 --- a/xattrs.c +++ b/xattrs.c @@ -94,11 +94,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) @@ -773,10 +776,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; } }