From 7beb4e3e0dad6f22365fd93207de1434b5d3276b Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Thu, 18 Feb 2021 16:23:28 +0000 Subject: [PATCH 1/4] fix_1471_sony2010_0.27 --- src/tiffcomposite_int.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/tiffcomposite_int.cpp b/src/tiffcomposite_int.cpp index a6bf925bd7..9e12ed3668 100644 --- a/src/tiffcomposite_int.cpp +++ b/src/tiffcomposite_int.cpp @@ -30,6 +30,7 @@ #include "tiffcomposite_int.hpp" #include "tiffvisitor_int.hpp" #include "makernote_int.hpp" +#include "sonymn_int.hpp" #include "value.hpp" #include "error.hpp" #include "enforce.hpp" @@ -1433,16 +1434,21 @@ namespace Exiv2 { uint16_t lastTag = static_cast(lastDef->idx_ / cfg()->tagStep()); idx += fillGap(mioWrapper, idx, lastDef->idx_ + lastDef->size(lastTag, cfg()->group_)); } - DataBuf buf; + + bool bCopyMio = true ; // MemIo mio stream contain the the "raw" data if (cfg()->cryptFct_) { - buf = cfg()->cryptFct_(tag(), mio.mmap(), static_cast(mio.size()), pRoot_); - } - if (buf.size_ > 0) { - ioWrapper.write(buf.pData_, buf.size_); - } - else { - ioWrapper.write(mio.mmap(), static_cast(mio.size())); + // Select sonyTagEncipher + CryptFct cryptFct = cfg()->cryptFct_; + if ( cryptFct == sonyTagDecipher ) { + cryptFct = sonyTagEncipher; + } + DataBuf buf = cryptFct(tag(), mio.mmap(), static_cast(mio.size()), pRoot_); + if ( buf.size_) { + ioWrapper.write(buf.pData_, buf.size_); + bCopyMio=false ; + } } + if ( bCopyMio ) ioWrapper.write(mio.mmap(), static_cast(mio.size())); return idx; } // TiffBinaryArray::doWrite From 84c309a3f549896c7ea17b7557d61c519af65546 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Thu, 18 Feb 2021 16:23:44 +0000 Subject: [PATCH 2/4] Test suite update. --- test/data/test_issue_1471.exv | Bin 0 -> 33781 bytes test/data/test_issue_1472.jpg | Bin 0 -> 33781 bytes tests/bugfixes/github/test_issue_1471.py | 18 ++++++++++++++ tests/bugfixes/github/test_issue_1472.py | 29 +++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 test/data/test_issue_1471.exv create mode 100644 test/data/test_issue_1472.jpg create mode 100644 tests/bugfixes/github/test_issue_1471.py create mode 100644 tests/bugfixes/github/test_issue_1472.py diff --git a/test/data/test_issue_1471.exv b/test/data/test_issue_1471.exv new file mode 100644 index 0000000000000000000000000000000000000000..92389917ed150b32c64c4c940428259a36c582b9 GIT binary patch literal 33781 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 literal 0 HcmV?d00001 diff --git a/test/data/test_issue_1472.jpg b/test/data/test_issue_1472.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92389917ed150b32c64c4c940428259a36c582b9 GIT binary patch literal 33781 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 literal 0 HcmV?d00001 diff --git a/tests/bugfixes/github/test_issue_1471.py b/tests/bugfixes/github/test_issue_1471.py new file mode 100644 index 0000000000..593865a938 --- /dev/null +++ b/tests/bugfixes/github/test_issue_1471.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +from system_tests import CaseMeta, CopyTmpFiles, path +@CopyTmpFiles("$data_path/test_issue_1471.exv") + +class test_issue_1471Test(metaclass=CaseMeta): + + filename = path("$tmp_path/test_issue_1471.exv") + commands = [ "$exiv2 -K Exif.Sony2010e.WB_RGBLevels $filename" + , "$exiv2 -M\"set Exif.Image.ImageID foobar\" $filename" + , "$exiv2 -K Exif.Sony2010e.WB_RGBLevels $filename" + ] + stdout = ["Exif.Sony2010e.WB_RGBLevels Short 3 598 256 442\n" + ,"" + ,"Exif.Sony2010e.WB_RGBLevels Short 3 598 256 442\n" + ] + stderr = [""]*len(commands) + retval = [ 0]*len(commands) diff --git a/tests/bugfixes/github/test_issue_1472.py b/tests/bugfixes/github/test_issue_1472.py new file mode 100644 index 0000000000..8ada33832b --- /dev/null +++ b/tests/bugfixes/github/test_issue_1472.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +from system_tests import CaseMeta, CopyTmpFiles, path +@CopyTmpFiles("$data_path/test_issue_1472.jpg") + +class test_issue_1472Test(metaclass=CaseMeta): + + filename = path("$tmp_path/test_issue_1472.jpg") + exvfile = path("$tmp_path/test_issue_1472.exv") + commands = [ "rm -rf $exvfile" + , "$exiv2 -pa --grep LensType2 $filename" + , "$exiv2 ex $filename" + , "$exiv2 -pa --grep LensType2 $exvfile" + , "$exiv2 rm $filename" + , "$exiv2 -pa --grep LensType2 $filename" + , "$exiv2 in $filename" + , "$exiv2 -pa --grep LensType2 $filename" + ] + stdout = ["" + ,"Exif.Sony2010e.LensType2 Short 1 1024\n" + ,"" + ,"Exif.Sony2010e.LensType2 Short 1 1024\n" + ,"" + ,"" + ,"" + ,"Exif.Sony2010e.LensType2 Short 1 1024\n" + ] + stderr = [""]*len(commands) + retval = [ 0,0,0,0,0,1,0,0] From e03c66a9ff6ce3d73fa0320c81deaab159479c5c Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Thu, 18 Feb 2021 16:24:01 +0000 Subject: [PATCH 3/4] Change test suite timeout. --- tests/suite.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/suite.conf b/tests/suite.conf index d4fb4924ec..e5c48c21fb 100644 --- a/tests/suite.conf +++ b/tests/suite.conf @@ -1,5 +1,5 @@ [General] -timeout: 2 +timeout: 20.0 memcheck: ${ENV:valgrind} [ENV] From d455f473e8e9e3c0c3729d9e08e6bd5bfe2b6223 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Fri, 19 Feb 2021 00:44:05 +0000 Subject: [PATCH 4/4] C++ simplification. --- src/tiffcomposite_int.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/tiffcomposite_int.cpp b/src/tiffcomposite_int.cpp index 9e12ed3668..a93b4592fc 100644 --- a/src/tiffcomposite_int.cpp +++ b/src/tiffcomposite_int.cpp @@ -1403,7 +1403,7 @@ namespace Exiv2 { // Tags must be sorted in ascending order std::sort(elements_.begin(), elements_.end(), cmpTagLt); uint32_t idx = 0; - MemIo mio; + MemIo mio; // memory stream in which to store data IoWrapper mioWrapper(mio, 0, 0, 0); // Some array entries need to have the size in the first element if (cfg()->hasSize_) { @@ -1435,7 +1435,6 @@ namespace Exiv2 { idx += fillGap(mioWrapper, idx, lastDef->idx_ + lastDef->size(lastTag, cfg()->group_)); } - bool bCopyMio = true ; // MemIo mio stream contain the the "raw" data if (cfg()->cryptFct_) { // Select sonyTagEncipher CryptFct cryptFct = cfg()->cryptFct_; @@ -1444,11 +1443,11 @@ namespace Exiv2 { } DataBuf buf = cryptFct(tag(), mio.mmap(), static_cast(mio.size()), pRoot_); if ( buf.size_) { - ioWrapper.write(buf.pData_, buf.size_); - bCopyMio=false ; + mio.seek(0,Exiv2::FileIo::beg); + mio.write(buf.pData_, buf.size_); } } - if ( bCopyMio ) ioWrapper.write(mio.mmap(), static_cast(mio.size())); + ioWrapper.write(mio.mmap(), static_cast(mio.size())); return idx; } // TiffBinaryArray::doWrite