From 8a1e949bff482f74599f60b8ab518442036b1834 Mon Sep 17 00:00:00 2001 From: Heiko Bauke Date: Wed, 22 Sep 2021 19:48:00 +0200 Subject: [PATCH 1/2] fix out of range access, minor performance improvement --- src/tags_int.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tags_int.cpp b/src/tags_int.cpp index 2b21de04..6466ca19 100644 --- a/src/tags_int.cpp +++ b/src/tags_int.cpp @@ -3265,8 +3265,8 @@ namespace Exiv2 { } std::string stringValue = value.toString(); - if (stringValue.at(19) == 'Z') { - stringValue = stringValue.substr(0, 19); + if (stringValue.size() == 20 && stringValue.at(19) == 'Z') { + stringValue.pop_back(); } std::replace(stringValue.begin(), stringValue.end(), 'T', ' '); std::replace(stringValue.begin(), stringValue.end(), '-', ':'); From 2ec128f479550d4615959d668c0b58079bc6e1c9 Mon Sep 17 00:00:00 2001 From: Kevin Backhouse Date: Thu, 23 Sep 2021 22:49:21 +0100 Subject: [PATCH 2/2] Add regression test to https://github.com/Exiv2/exiv2/pull/1918 --- test/data/issue_1918_poc.jpg | Bin 0 -> 27484 bytes tests/bugfixes/github/test_issue_1918.py | 17 +++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 test/data/issue_1918_poc.jpg create mode 100644 tests/bugfixes/github/test_issue_1918.py diff --git a/test/data/issue_1918_poc.jpg b/test/data/issue_1918_poc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43aa9bc60001ae72c01be56f91d6d7e2f5658c23 GIT binary patch literal 27484 zcmeEt2Ut|gvhG?F8FJ1!4>{*F@~aukpx8Od46AczDN1Q8XGpr|0CfC`8L zCgcr!pS`!9d(J)I{oZ@`efN8(znNLp-LhY22S9A%1Ni{p zbe&GZJvi83Mo`cfFhL|8^hN=8_kSy)O&OiD&v z^h~V3jIl$ohp(GFt1v6`pVH1iwhMI$48j^G¬FO`t=Voxek%gHMn=tI*FC4k5vQ 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�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