[cifs-protocol] [MS-XCA] LZ77+ Huffman: questions about blocks

Douglas Bagnall douglas.bagnall at catalyst.net.nz
Fri Oct 14 04:57:25 UTC 2022


hi Dochelp,


Does the beginning of the second and subsequent blocks break the bitstream, 
starting again at a byte boundary after the new Huffman table?

The question is best explained by analogy to the way long lengths are handled in 
matches. Suppose we have a match symbol in the middle of a bitstream, and the 
match is a long one, requiring the reading of an extra byte:

    ijklmnop  abcDEFgh [distance] qrs...
                 |
                 [match 1, 15]

Here abc, ghi.. are the sequence of bits in the stream around the match DEF, 
which is read in alternating bytes by little-endian rules, and the distance is 
plonked in the middle of the stream as an individual byte. The stream just flows 
around it, so gh-ijklmnop are interpreted after [distance].

Now, if DEF instead ended the block:

    ijklmnop  abcDEFgh [new Huffman table] qrs...
                 |
                 [ends the block (64k)]


would the bits gh-jklmnop be interpreted using the new Huffman table, as part of 
the new block, or would those bits be dropped?

Multi-block examples would of course be helpful.


Douglas




More information about the cifs-protocol mailing list