diff --git a/src/xmp.cpp b/src/xmp.cpp index 816d9de5a4..8dfaad677d 100644 --- a/src/xmp.cpp +++ b/src/xmp.cpp @@ -753,8 +753,12 @@ namespace Exiv2 { return 2; } - XMLValidator::check(xmpPacket.data(), xmpPacket.size()); - SXMPMeta meta(xmpPacket.data(), static_cast(xmpPacket.size())); + // Make sure the unterminated substring is used + size_t len = xmpPacket.size(); + while (len > 0 && 0 == xmpPacket[len - 1]) --len; + + XMLValidator::check(xmpPacket.data(), len); + SXMPMeta meta(xmpPacket.data(), static_cast(len)); SXMPIterator iter(meta); std::string schemaNs, propPath, propValue; XMP_OptionBits opt = 0;