Provide length-limited decompress methods #960
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Provide length-limited decompress methods so that callers can control allocation sizes.
Motivation:
Limiting the size of buffer allocation can help mitigate the risks of compression bombs. In cases where these could be a legitimate attack vector, we should provide the library caller with the option of limiting the buffer size.
Changes:
decompressKnownLength
method toDecoder.java
to allow for decompression of known-size payloads.decompress
overload toDecoder.java
which accepts a max size to allow for decompression of untrusted payloads with a maximum allowed size.DecoderJNI.java
,decoder_jni.cc
anddecoder_jni.h
to allow users to specify the output buffer size.Result:
Callers which believe that they have known-size payloads or want to limit decompressed data sizes can decompress those payloads in linear space complexity based on the expected/max-allowed size rather than unknown space complexity, based on the actual size.