From f8ae9297c7829393da954e54f38be0c3c824bc6f Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 8 Jul 2021 12:10:05 +0100 Subject: [PATCH 1/2] Regression test for https://github.com/Exiv2/exiv2/issues/1763 --- test/data/issue_1763_poc.exv | Bin 0 -> 12027 bytes tests/bugfixes/github/test_issue_1763.py | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100755 test/data/issue_1763_poc.exv create mode 100644 tests/bugfixes/github/test_issue_1763.py diff --git a/test/data/issue_1763_poc.exv b/test/data/issue_1763_poc.exv new file mode 100755 index 0000000000000000000000000000000000000000..b1f540a06a63af154c7693ab8720985baa095cd1 GIT binary patch literal 12027 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 literal 0 HcmV?d00001 diff --git a/tests/bugfixes/github/test_issue_1763.py b/tests/bugfixes/github/test_issue_1763.py new file mode 100644 index 00000000..ea5f5484 --- /dev/null +++ b/tests/bugfixes/github/test_issue_1763.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from system_tests import CaseMeta, path + +class CanonPrintCsLensTypeByMetadataNullIteratorDeref(metaclass=CaseMeta): + """ + Regression test for the bug described in: + https://github.com/Exiv2/exiv2/issues/1763 + """ + url = "https://github.com/Exiv2/exiv2/issues/1763" + + filename = path("$data_path/issue_1763_poc.exv") + commands = ["$exiv2 -Pt $filename"] + + stderr = [""] + retval = [0] + + def compare_stdout(self, i, command, got_stdout, expected_stdout): + # Check that it printed "Bad value" for the date. + self.assertIn("Unknown Lens (254)", got_stdout) From 033175e127274ad0e6cf6e9a0d9202c22f7536d5 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 8 Jul 2021 12:11:20 +0100 Subject: [PATCH 2/2] Don't deref end iterator. --- src/canonmn_int.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index 0c129921..50bb3676 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -2750,6 +2750,7 @@ namespace Exiv2 { if (pos == metadata->end() || pos->value().count() < 3 || pos->value().typeId() != unsignedShort || pos->value().toFloat(2) == 0.0F) { os << "Unknown Lens (" << lensType << ")"; + return os; } int const exifFlMin = static_cast(static_cast(pos->value().toLong(1)) / pos->value().toFloat(2)); @@ -2759,6 +2760,7 @@ namespace Exiv2 { pos = metadata->findKey(aperKey); if (pos == metadata->end() || pos->value().count() != 1 || pos->value().typeId() != unsignedShort) { os << "Unknown Lens (" << lensType << ")"; + return os; } auto exifAperMax = fnumber(canonEv(static_cast(pos->value().toLong(0))));