From af9b5fc0ed820478de43442bc82073bf0dd10b5b Mon Sep 17 00:00:00 2001 From: Henry Schimke Date: Mon, 9 Jan 2023 09:43:04 -0600 Subject: [PATCH] zxing: fa19d4758f38daa5d0ea6557af9a64721cfcce07 --- .../decoder/decoded_bit_stream_parser.rs | 20 +++++++++++++++---- src/qrcode/QRCodeWriterTestCase.rs | 3 +-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/pdf417/decoder/decoded_bit_stream_parser.rs b/src/pdf417/decoder/decoded_bit_stream_parser.rs index e14dac2..a841dc2 100644 --- a/src/pdf417/decoder/decoded_bit_stream_parser.rs +++ b/src/pdf417/decoder/decoded_bit_stream_parser.rs @@ -277,25 +277,37 @@ pub fn decodeMacroBlock( let mut segmentCount = ECIStringBuilder::new(); codeIndex = numericCompaction(codewords, codeIndex + 1, &mut segmentCount)?; segmentCount = segmentCount.build_result(); - resultMetadata.setSegmentCount(segmentCount.to_string().parse().unwrap()); + let Ok(parsed_segment_count) = segmentCount.to_string().parse() else { + return Err(Exceptions::FormatException(None)); + }; + resultMetadata.setSegmentCount(parsed_segment_count); } MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP => { let mut timestamp = ECIStringBuilder::new(); codeIndex = numericCompaction(codewords, codeIndex + 1, &mut timestamp)?; timestamp = timestamp.build_result(); - resultMetadata.setTimestamp(timestamp.to_string().parse().unwrap()); + let Ok(parsed_timestamp) = timestamp.to_string().parse() else { + return Err(Exceptions::FormatException(None)); + }; + resultMetadata.setTimestamp(parsed_timestamp); } MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM => { let mut checksum = ECIStringBuilder::new(); codeIndex = numericCompaction(codewords, codeIndex + 1, &mut checksum)?; checksum = checksum.build_result(); - resultMetadata.setChecksum(checksum.to_string().parse().unwrap()); + let Ok(parsed_checksum ) = checksum.to_string().parse() else { + return Err(Exceptions::FormatException(None)); + }; + resultMetadata.setChecksum(parsed_checksum); } MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE => { let mut fileSize = ECIStringBuilder::new(); codeIndex = numericCompaction(codewords, codeIndex + 1, &mut fileSize)?; fileSize = fileSize.build_result(); - resultMetadata.setFileSize(fileSize.to_string().parse().unwrap()); + let Ok(parsed_file_size)= fileSize.to_string().parse()else { + return Err(Exceptions::FormatException(None)); + }; + resultMetadata.setFileSize(parsed_file_size); } _ => return Err(Exceptions::FormatException(None)), } diff --git a/src/qrcode/QRCodeWriterTestCase.rs b/src/qrcode/QRCodeWriterTestCase.rs index 63f8530..3a1a55d 100644 --- a/src/qrcode/QRCodeWriterTestCase.rs +++ b/src/qrcode/QRCodeWriterTestCase.rs @@ -19,8 +19,7 @@ use std::{collections::HashMap, path::PathBuf}; use image::DynamicImage; use crate::{ - common::BitMatrix, qrcode::QRCodeWriter, BarcodeFormat, - EncodeHintType, EncodeHintValue, Writer, + common::BitMatrix, qrcode::QRCodeWriter, BarcodeFormat, EncodeHintType, EncodeHintValue, Writer, }; use super::decoder::ErrorCorrectionLevel;