]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
xar: clean xattr checksums on heap allocation failure
authordatauwu <datauwu@users.noreply.github.com>
Wed, 15 Jul 2026 14:34:02 +0000 (22:34 +0800)
committerdatauwu <datauwu@users.noreply.github.com>
Wed, 15 Jul 2026 14:34:02 +0000 (22:34 +0800)
Finalize xattr checksum contexts if the xattr heap allocation fails.

libarchive/archive_write_set_format_xar.c

index a1bb52331d48e3f99e7659fca165f6826be7928f..8f8446e07edbb9b86f20ac17c87f0ce6584fa804 100644 (file)
@@ -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);