Test for short JPEG tag

This commit is contained in:
5225225 committed 2021-05-29 22:12:35 +01:00
1 parent 03b6ed413b
commit 65a1fbe8ae
3 files changed
+40 -1

No files matched your search

+8 -1
View File
@@ -1409,7 +1409,14 @@ impl<R: Read + Seek> Decoder<R> {
for (idx, offset) in offsets.iter().enumerate() {
self.goto_offset(*offset)?;
let jpeg_reader = JpegReader::new(&mut self.reader, bytes[idx], &jpeg_tables)?;
let length = bytes[idx];
if jpeg_tables.is_some() && length < 2 {
return Err(TiffError::FormatError(
TiffFormatError::InvalidTagValueType(Tag::JPEGTables),
));
}
let jpeg_reader = JpegReader::new(&mut self.reader, length, &jpeg_tables)?;
let mut decoder = jpeg::Decoder::new(jpeg_reader);
match decoder.decode() {
+6
View File
@@ -231,6 +231,12 @@ impl JpegReader {
tables
);
assert!(
length >= 2,
"if jpeg_tables is given, length must be at least 2 bytes long, got {}",
length
);
let mut jpeg_data = tables.clone();
let truncated_length = jpeg_data.len() - 2;
jpeg_data.truncate(truncated_length);