Decompress a raw vector
Arguments
- x
A raw vector holding a complete compressed stream.
- codec
Codec name, as listed in
komp_codecs().- max_output
Refuse to produce more than this many bytes. Defaults to 1 GiB, overridable with
options(zukomp.max_output = ). Use0for unlimited, deliberately. Compressed input from an untrusted source can expand enormously, and the cap is enforced by the core stream driver, so no codec can bypass it.- max_ratio
Refuse to expand by more than this factor.
NULL(the default) means no ratio limit: legitimately compressible data routinely exceeds any safe-looking threshold, so this is opt-in.
Examples
z <- komp_compress(charToRaw(strrep("data ", 200)), "gzip")
rawToChar(komp_decompress(z, "gzip"))
#> [1] "data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data data "
# a small input that would expand a long way is stopped, not allocated
bomb <- komp_compress(raw(1e6), "gzip")
length(bomb)
#> [1] 1003
try(komp_decompress(bomb, "gzip", max_output = 1024))
#> Error in komp_decompress(bomb, "gzip", max_output = 1024) :
#> Decompressed output exceeded `max_output`.