]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Make ZSTD_getDictID_fromDDict() Read DictID from DDict 3290/head
authorW. Felix Handte <w@felixhandte.com>
Sat, 15 Oct 2022 02:53:03 +0000 (22:53 -0400)
committerW. Felix Handte <w@felixhandte.com>
Sat, 15 Oct 2022 02:53:03 +0000 (22:53 -0400)
Currently this function actually reads the dict ID from the dictionary's
header, via `ZSTD_getDictID_fromDict()`. But during decompression the decomp-
ressor actually compares the dict ID in the frame header with the dict ID in
the DDict. Now of course the dict ID in the dictionary contents and the dict
ID in the DDict struct *should* be the same. But in cases of memory corrupt-
ion, where they can drift out of sync, it's misleading for this function to
read it again from the dict buffer rather then return the dict ID that will
actually be used.

Also doing it this way avoids rechecking the magic and so on and so it is a
tiny bit more efficient.

lib/decompress/zstd_ddict.c

index 889764a5e8787399484f91325a4c48b98f6adbaf..6ffa35f6eb9f9faab028cc7ad9c2e026e4e6de77 100644 (file)
@@ -240,5 +240,5 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict)
 unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict)
 {
     if (ddict==NULL) return 0;
-    return ZSTD_getDictID_fromDict(ddict->dictContent, ddict->dictSize);
+    return ddict->dictID;
 }