This is an automated email from the ASF dual-hosted git repository.

etseidl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new 49ed6ef804 Add bit width check (#8888)
49ed6ef804 is described below

commit 49ed6ef804796ed56512512dc52da0005dd59d75
Author: Alex Stephen <[email protected]>
AuthorDate: Sat Nov 22 22:51:40 2025 +0530

    Add bit width check (#8888)
---
 parquet/src/encodings/decoding.rs | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/parquet/src/encodings/decoding.rs 
b/parquet/src/encodings/decoding.rs
index 8201b38753..1f81c67dab 100644
--- a/parquet/src/encodings/decoding.rs
+++ b/parquet/src/encodings/decoding.rs
@@ -681,6 +681,10 @@ where
             .try_into()
             .map_err(|_| general_err!("invalid 'mini_blocks_per_block'"))?;
 
+        if self.mini_blocks_per_block == 0 {
+            return Err(general_err!("cannot have zero miniblocks per block"));
+        }
+
         self.values_left = self
             .bit_reader
             .get_vlq_int()
@@ -1688,6 +1692,21 @@ mod tests {
         test_delta_bit_packed_decode::<Int64Type>(data);
     }
 
+    #[test]
+    fn test_delta_bit_packed_zero_miniblocks() {
+        // It is invalid for mini_blocks_per_block to be 0
+        let data = vec![
+            128, 1, // block_size = 128
+            0, // mini_blocks_per_block = 0
+        ];
+        let mut decoder = DeltaBitPackDecoder::<Int32Type>::new();
+        let err = decoder.set_data(data.into(), 0).unwrap_err();
+        assert_eq!(
+            err.to_string(),
+            "Parquet error: cannot have zero miniblocks per block"
+        );
+    }
+
     #[test]
     fn test_delta_bit_packed_decoder_sample() {
         let data_bytes = vec![

Reply via email to