Merge branch 'master' of github.com:Farkal/image-tiff into features/32-bit-float-samples
This commit is contained in:
commit
5f48444fa0
11 files changed
+81
-33
No files matched your search
+8
-6
@@ -486,11 +486,13 @@ impl<R: Read + Seek> Decoder<R> {
|
||||
/// Reads a string
|
||||
#[inline]
|
||||
pub fn read_string(&mut self, length: usize) -> TiffResult<String> {
|
||||
let mut out = String::with_capacity(length);
|
||||
self.reader.read_to_string(&mut out)?;
|
||||
let mut out = vec![0; length];
|
||||
self.reader.read_exact(&mut out)?;
|
||||
// Strings may be null-terminated, so we trim anything downstream of the null byte
|
||||
let trimmed = out.bytes().take_while(|&n| n != 0).collect::<Vec<u8>>();
|
||||
Ok(String::from_utf8(trimmed)?)
|
||||
if let Some(first) = out.iter().position(|&b| b == 0) {
|
||||
out.truncate(first);
|
||||
}
|
||||
Ok(String::from_utf8(out)?)
|
||||
}
|
||||
|
||||
/// Reads a TIFF IFA offset/value field
|
||||
@@ -646,7 +648,7 @@ impl<R: Read + Seek> Decoder<R> {
|
||||
let (bytes, reader) = LZWReader::new(
|
||||
&mut self.reader,
|
||||
usize::try_from(length)?,
|
||||
max_uncompressed_length
|
||||
max_uncompressed_length * buffer.byte_len()
|
||||
)?;
|
||||
(bytes, Box::new(reader))
|
||||
}
|
||||
@@ -838,7 +840,7 @@ impl<R: Read + Seek> Decoder<R> {
|
||||
|
||||
let buffer_size = usize::try_from(self.width)? * strip_height * self.bits_per_sample.len();
|
||||
|
||||
if buffer.len() < buffer_size || usize::try_from(byte_count)? / buffer.byte_len() > buffer_size {
|
||||
if buffer.len() < buffer_size {
|
||||
return Err(TiffError::FormatError(
|
||||
TiffFormatError::InconsistentSizesEncountered,
|
||||
));
|
||||
|
||||
Reference in new issue
Block a user