From: datauwu Date: Wed, 15 Jul 2026 14:34:02 +0000 (+0800) Subject: xar: clean xattr checksums on heap allocation failure X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c318e8fac6701befd2d4a04d6a79f6426cb3eb8d;p=thirdparty%2Flibarchive.git xar: clean xattr checksums on heap allocation failure Finalize xattr checksum contexts if the xattr heap allocation fails. --- diff --git a/libarchive/archive_write_set_format_xar.c b/libarchive/archive_write_set_format_xar.c index a1bb52331..8f8446e07 100644 --- a/libarchive/archive_write_set_format_xar.c +++ b/libarchive/archive_write_set_format_xar.c @@ -3223,6 +3223,12 @@ save_xattrs(struct archive_write *a, struct file *file) heap = calloc(1, sizeof(*heap)); if (heap == NULL) { + struct chksumval sumval; + + checksum_final(&(xar->a_sumwrk), &sumval); + checksum_final(&(xar->e_sumwrk), &sumval); + xar->a_sumwrk.alg = CKSUM_NONE; + xar->e_sumwrk.alg = CKSUM_NONE; archive_set_error(&a->archive, ENOMEM, "Can't allocate memory for xattr"); return (ARCHIVE_FATAL);