summaryrefslogtreecommitdiff
path: root/ext/node/ops/zlib/brotli.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-02-07 21:53:32 +0530
committerGitHub <noreply@github.com>2024-02-07 21:53:32 +0530
commita32e7f0eb23fa17f5af2fc4c8abfd79762934244 (patch)
treef1c0a23a800974f8311dc45f044692b04868fb23 /ext/node/ops/zlib/brotli.rs
parente5ae142fbeb83ec5b335a0a3fcb7a564cbf65bd4 (diff)
fix(node): handle brotli compression end chunk sizes (#22322)
Fixes https://github.com/denoland/deno/issues/22259
Diffstat (limited to 'ext/node/ops/zlib/brotli.rs')
-rw-r--r--ext/node/ops/zlib/brotli.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/ext/node/ops/zlib/brotli.rs b/ext/node/ops/zlib/brotli.rs
index bc8aa9a25..f906e8827 100644
--- a/ext/node/ops/zlib/brotli.rs
+++ b/ext/node/ops/zlib/brotli.rs
@@ -167,7 +167,6 @@ pub fn op_brotli_compress_stream(
let mut next_in = input.as_ptr();
let mut available_out = output.len();
let mut next_out = output.as_mut_ptr();
- let mut total_out = 0;
if BrotliEncoderCompressStream(
ctx.inst,
@@ -176,7 +175,7 @@ pub fn op_brotli_compress_stream(
&mut next_in,
&mut available_out,
&mut next_out,
- &mut total_out,
+ std::ptr::null_mut(),
) != 1
{
return Err(type_error("Failed to compress"));
@@ -194,7 +193,7 @@ pub fn op_brotli_compress_stream_end(
#[smi] rid: u32,
#[buffer] output: &mut [u8],
) -> Result<usize, AnyError> {
- let ctx = state.resource_table.take::<BrotliCompressCtx>(rid)?;
+ let ctx = state.resource_table.get::<BrotliCompressCtx>(rid)?;
// SAFETY: TODO(littledivy)
unsafe {
@@ -281,7 +280,6 @@ pub fn op_brotli_decompress_stream(
let mut next_in = input.as_ptr();
let mut available_out = output.len();
let mut next_out = output.as_mut_ptr();
- let mut total_out = 0;
if matches!(
CBrotliDecoderDecompressStream(
@@ -290,11 +288,12 @@ pub fn op_brotli_decompress_stream(
&mut next_in,
&mut available_out,
&mut next_out,
- &mut total_out,
+ std::ptr::null_mut(),
),
BrotliDecoderResult::BROTLI_DECODER_RESULT_ERROR
) {
- return Err(type_error("Failed to decompress"));
+ let ec = CBrotliDecoderGetErrorCode(ctx.inst) as i32;
+ return Err(type_error(format!("Failed to decompress, error {ec}")));
}
// On progress, next_out is advanced and available_out is reduced.