summaryrefslogtreecommitdiff
path: root/lib/Image/ExifTool/QuickTime.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Image/ExifTool/QuickTime.pm')
-rw-r--r--lib/Image/ExifTool/QuickTime.pm12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm
index e378d094..85b8718d 100644
--- a/lib/Image/ExifTool/QuickTime.pm
+++ b/lib/Image/ExifTool/QuickTime.pm
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
-$VERSION = '2.73';
+$VERSION = '2.74';
sub ProcessMOV($$;$);
sub ProcessKeys($$$);
@@ -8795,16 +8795,20 @@ sub ProcessSampleDesc($$$)
my $num = Get32u($dataPt, 4); # get number of sample entries in table
$pos += 8;
- my $i;
+ my ($i, $err);
for ($i=0; $i<$num; ++$i) { # loop through sample entries
- last if $pos + 8 > $dirLen;
+ $pos + 8 > $dirLen and $err = 1, last;
my $size = Get32u($dataPt, $pos);
- last if $pos + $size > $dirLen;
+ $pos + $size > $dirLen and $err = 1, last;
$$dirInfo{DirStart} = $pos;
$$dirInfo{DirLen} = $size;
ProcessHybrid($et, $dirInfo, $tagTablePtr);
$pos += $size;
}
+ if ($err and $$et{HandlerType}) {
+ my $grp = $$et{SET_GROUP1} || $$dirInfo{Parent} || 'unknown';
+ $et->Warn("Truncated $$et{HandlerType} sample table for $grp");
+ }
return 1;
}