]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
xar: clean checksums on encoder setup 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 both file checksum contexts if encoder setup fails after init.

libarchive/archive_write_set_format_xar.c

index 59d94bf337f42b1eaf5caa087b56afd4e7457e45..e5b0d8ca57acfaa41c950472f431599302b5115e 100644 (file)
@@ -674,9 +674,15 @@ xar_write_header(struct archive_write *a, struct archive_entry *entry)
        checksum_init(&(xar->e_sumwrk), xar->opt_sumalg);
        r = xar_compression_init_encoder(a);
 
-       if (r != ARCHIVE_OK)
+       if (r != ARCHIVE_OK) {
+               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;
                return (r);
-       else
+       else
                return (r2);
 }