diff --git a/modules/imgcodecs/src/jpeg_exif.cpp b/modules/imgcodecs/src/jpeg_exif.cpp index af4b7a9908..c7b5b76a26 100644 --- a/modules/imgcodecs/src/jpeg_exif.cpp +++ b/modules/imgcodecs/src/jpeg_exif.cpp @@ -401,6 +401,9 @@ std::string ExifReader::getString(const size_t offset) const { dataOffset = getU32( offset + 8 ); } + if (dataOffset > m_data.size() || dataOffset + size > m_data.size()) { + throw ExifParsingError(); + } std::vector::const_iterator it = m_data.begin() + dataOffset; std::string result( it, it + size ); //copy vector content into result