Closed sorah closed 1 year ago
zstream_discard_input was encoding and character-aware when given input is user-provided, so this discards len chars instead of len bytes.
len
Also Zlib.gunzip explains in its rdoc that it is equivalent with the following code, but this doesn't fail for UTF-8 String.
string = %w[1f8b0800c28000000003cb48cdc9c9070086a6103605000000].pack("H*").force_encoding('UTF-8') sio = StringIO.new(string) gz = Zlib::GzipReader.new(sio, encoding: Encoding::ASCII_8BIT) p gz.read #=> "hello" gz&.close p Zlib.gunzip(string) #=> Zlib::DataError
Reported and discovered by @eagletmt at https://twitter.com/eagletmt/status/1689692467929694209
zstream_discard_input was encoding and character-aware when given input is user-provided, so this discards
len
chars instead oflen
bytes.Also Zlib.gunzip explains in its rdoc that it is equivalent with the following code, but this doesn't fail for UTF-8 String.
Reported and discovered by @eagletmt at https://twitter.com/eagletmt/status/1689692467929694209