]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
zstd: Add support for files created with pzstd 1357/head
authorMatúš Olekšák <oleksak.matus@gmail.com>
Wed, 8 Apr 2020 18:48:16 +0000 (20:48 +0200)
committerMatúš Olekšák <oleksak.matus@gmail.com>
Wed, 8 Apr 2020 18:48:16 +0000 (20:48 +0200)
libarchive/archive_read_support_filter_zstd.c

index c8bb36be703cee07f30ac3525898aaa6054624b8..af7eeb7c1e24a1f49b5353a7dba56322147e6194 100644 (file)
@@ -119,6 +119,8 @@ zstd_bidder_bid(struct archive_read_filter_bidder *self,
 
        /* Zstd frame magic values */
        const unsigned zstd_magic = 0xFD2FB528U;
+       const unsigned zstd_magic_skippable_start = 0x184D2A50U;
+       const unsigned zstd_magic_skippable_mask = 0xFFFFFFF0;
 
        (void) self; /* UNUSED */
 
@@ -129,6 +131,8 @@ zstd_bidder_bid(struct archive_read_filter_bidder *self,
        prefix = archive_le32dec(buffer);
        if (prefix == zstd_magic)
                return (32);
+       if ((prefix & zstd_magic_skippable_mask) == zstd_magic_skippable_start)
+               return (32);
 
        return (0);
 }