From a32e7f0eb23fa17f5af2fc4c8abfd79762934244 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Wed, 7 Feb 2024 21:53:32 +0530 Subject: fix(node): handle brotli compression end chunk sizes (#22322) Fixes https://github.com/denoland/deno/issues/22259 --- ext/node/ops/zlib/brotli.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'ext/node/ops/zlib') 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 { - let ctx = state.resource_table.take::(rid)?; + let ctx = state.resource_table.get::(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. -- cgit v1.2.3