From e34e150f2244ff66c6a139fb4a182bf2fc7bc0d5 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Tue, 3 Aug 2021 17:25:46 +0100 Subject: [PATCH] Replace assertion with an error message. (cherry picked from commit 4ec1768415ba015041a9bb28ab17c1ccf6a8c63e) --- src/tiffcomposite_int.cpp | 9 ++++++++- test/data/issue_1833_poc.jpg | Bin 0 -> 33155 bytes tests/bugfixes/github/test_issue_1833.py | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/data/issue_1833_poc.jpg create mode 100644 tests/bugfixes/github/test_issue_1833.py diff --git a/src/tiffcomposite_int.cpp b/src/tiffcomposite_int.cpp index 26e189cc..6da7a964 100644 --- a/src/tiffcomposite_int.cpp +++ b/src/tiffcomposite_int.cpp @@ -999,9 +999,16 @@ namespace Exiv2 { if (!mn_) { return TiffEntryBase::doCount(); } +#ifndef SUPPRESS_WARNINGS // Count of IFD makernote in tag Exif.Photo.MakerNote is the size of the // Makernote in bytes - assert(tiffType() == ttUndefined || tiffType() == ttUnsignedByte || tiffType() == ttSignedByte); + if (tiffType() != ttUndefined && tiffType() != ttUnsignedByte && tiffType() != ttSignedByte) { + EXV_ERROR << "Makernote entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << " has incorrect Exif (TIFF) type " << std::dec << tiffType() + << ". (Expected signed or unsigned byte.)\n"; + } +#endif return mn_->size(); } diff --git a/test/data/issue_1833_poc.jpg b/test/data/issue_1833_poc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9800ceeef153596ce927b2c268c162fc820220e GIT binary patch literal 33155 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 literal 0 HcmV?d00001 diff --git a/tests/bugfixes/github/test_issue_1833.py b/tests/bugfixes/github/test_issue_1833.py new file mode 100644 index 00000000..5508e08f --- /dev/null +++ b/tests/bugfixes/github/test_issue_1833.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +from system_tests import CaseMeta, path, check_no_ASAN_UBSAN_errors + +class TiffMnEntryDoCountInvalidTiffType(metaclass=CaseMeta): + """ + Test for the bug described in: + https://github.com/Exiv2/exiv2/issues/1833 + """ + url = "https://github.com/Exiv2/exiv2/issues/1833" + + filename = path("$data_path/issue_1833_poc.jpg") + commands = ["$exiv2 -pS $filename"] + stderr = [""] + retval = [0] + + compare_stdout = check_no_ASAN_UBSAN_errors