From 9c138ff62ce14d1a1417a31e932858b2a5db2c72 Mon Sep 17 00:00:00 2001 From: Richard Viney Date: Wed, 5 Mar 2025 16:05:30 +1300 Subject: [PATCH 1/2] Fix panic when prediction calculation is invalid --- src/parser.rs | 6 ++++++ .../images/invalid-prediction-shift.jpg | Bin 0 -> 3860 bytes 2 files changed, 6 insertions(+) create mode 100644 tests/crashtest/images/invalid-prediction-shift.jpg diff --git a/src/parser.rs b/src/parser.rs index 5b4dffe1..b17e7e9a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -405,6 +405,12 @@ pub fn parse_sos(reader: &mut R, frame: &FrameInfo) -> Result let predictor_selection; let point_transform = successive_approximation_low; + if point_transform >= frame.precision { + return Err(Error::Format( + "invalid point transform, must be less than the frame precision".to_owned(), + )); + } + if frame.coding_process == CodingProcess::DctProgressive { predictor_selection = Predictor::NoPrediction; if spectral_selection_end > 63 || spectral_selection_start > spectral_selection_end || diff --git a/tests/crashtest/images/invalid-prediction-shift.jpg b/tests/crashtest/images/invalid-prediction-shift.jpg new file mode 100644 index 0000000000000000000000000000000000000000..386f63ebc83b7aae9e206a4fb34e5a1e6db0117b GIT binary patch literal 3860 zcmex=_tv~ScdSO@@1n*bPl Yl%{J4y#M`gv?oQ^5QkYN|NkZf0E&em(f|Me literal 0 HcmV?d00001 From 20598426c014f442b3497e0e83d18c7c6a55c6ae Mon Sep 17 00:00:00 2001 From: Richard Viney Date: Wed, 5 Mar 2025 17:00:44 +1300 Subject: [PATCH 2/2] Fix CI on Ubuntu 24.04 --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index cb988981..2ab53599 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -50,7 +50,7 @@ jobs: - name: Installing emulator and linker run: | sudo apt-get update - sudo apt-get install qemu binfmt-support qemu-user-static gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu + sudo apt-get install qemu-system binfmt-support qemu-user-static gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu - name: Installing Rust toolchain uses: actions-rs/toolchain@v1