Skip to content

Missing last two Bytes when decompressing #508

@dns2utf8

Description

@dns2utf8

Hi all

I have a weird decompression bug with deflate. I isolated it to this buffer:

let hex_buffer = [0xaa, 0x56, 0x72, 0x4b, 0x2d, 0x49, 0xce, 0xf0, 0xc8, 0xcf, 0xcf, 0xf6, 0x4d, 0x2d, 0x49, 0x4c, 0x49, 0x2c, 0x49, 0x54, 0xb2, 0xaa, 0x56, 0xca, 0xc8, 0xcf, 0xcf, 0x56, 0xb2, 0x02, 0x53, 0xc5, 0xfa, 0x19, 0xa9, 0x39, 0x39, 0xf9, 0x4a, 0x3a, 0x4a, 0xd9, 0xa9, 0x95, 0x4a, 0x56, 0x4a, 0x89, 0x79, 0x95, 0x19, 0xf9, 0xe5, 0x4a, 0x00, 0x00, 0xff, 0xff];

  let mut decoder = read::DeflateDecoder::new(&*hex_buffer);

            let mut buf = Vec::new();
            let decoded_len = decoder
                .read_to_end(&mut buf)
                .context("unable to read compressed payload")?;

let s = String::from_utf8(buf).context("utf-8 error")?;
let expected =  "{\"FetchHookMetadata\":{\"hook\":\"hooks/hello\",\"key\":\"anyhow\"}}";

This should return this String, but it is missing the last two }}

Since this buffer will be coming over WebSocket I extended it with [ 0x00, 0x00, 0xff, 0xff ] but not doing that made no difference.

Hope anyone has an idea on why it just does not decompress the last two Bytes.
Thank you in advance,
Stefan

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions