summaryrefslogtreecommitdiff
path: root/lib/Image/ExifTool/Jpeg2000.pm
diff options
context:
space:
mode:
authorexiftool <exiftool@users.sourceforge.net>2023-01-04 09:25:04 -0500
committerexiftool <exiftool@users.sourceforge.net>2023-01-04 09:25:04 -0500
commit19d09138d8ad75d0221435fb7a16a415625a53e5 (patch)
tree02d51b102b71171412e7ec92e9ba91459a0b8ac0 /lib/Image/ExifTool/Jpeg2000.pm
parentac4151014c3d9b7d15ebd3bdfdc01405492a05ee (diff)
Update to 12.53
Diffstat (limited to 'lib/Image/ExifTool/Jpeg2000.pm')
-rw-r--r--lib/Image/ExifTool/Jpeg2000.pm16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/Image/ExifTool/Jpeg2000.pm b/lib/Image/ExifTool/Jpeg2000.pm
index 95d1d78a..248172d8 100644
--- a/lib/Image/ExifTool/Jpeg2000.pm
+++ b/lib/Image/ExifTool/Jpeg2000.pm
@@ -444,7 +444,7 @@ my %j2cMarker = (
ProcessProc => \&Image::ExifTool::ProcessTIFF,
WriteProc => \&Image::ExifTool::WriteTIFF,
DirName => 'EXIF',
- Start => '$valuePtr + 4',
+ Start => '$valuePtr + 4 + (length($$dataPt)-$valuePtr > 4 ? unpack("N", $$dataPt) : 0)',
},
},
);
@@ -1096,11 +1096,16 @@ sub ProcessJpeg2000Box($$$)
if ($$tagInfo{SubDirectory}) {
my $subdir = $$tagInfo{SubDirectory};
my $subdirStart = $valuePtr;
+ my $subdirLen = $boxLen;
if (defined $$subdir{Start}) {
- #### eval Start ($valuePtr)
+ #### eval Start ($valuePtr, $dataPt)
$subdirStart = eval($$subdir{Start});
+ $subdirLen -= $subdirStart - $valuePtr;
+ if ($subdirLen < 0) {
+ $subdirStart = $valuePtr;
+ $subdirLen = 0;
+ }
}
- my $subdirLen = $boxLen - ($subdirStart - $valuePtr);
my %subdirInfo = (
Parent => 'JP2',
DataPt => $dataPt,
@@ -1118,7 +1123,8 @@ sub ProcessJpeg2000Box($$$)
my $subTable = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
if ($outfile) {
# remove this directory from our create list
- delete $$et{AddJp2Dirs}{$$tagInfo{Name}};
+ delete $$et{AddJp2Dirs}{$$tagInfo{Name}}; # (eg. 'EXIF')
+ delete $$et{AddJp2Dirs}{$boxID}; # (eg. 'Exif')
my $newdir;
# only edit writable UUID, Exif and jp2h boxes
if ($uuid or $boxID eq 'Exif' or ($boxID eq 'xml ' and $$et{IsJXL}) or
@@ -1376,7 +1382,7 @@ files.
=head1 AUTHOR
-Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
+Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.