diff --git a/modules/imgcodecs/src/exif.cpp b/modules/imgcodecs/src/exif.cpp index 270848180a..8a4f3f4b86 100644 --- a/modules/imgcodecs/src/exif.cpp +++ b/modules/imgcodecs/src/exif.cpp @@ -160,6 +160,10 @@ std::map ExifReader::getExif() case APP9: case APP10: case APP11: case APP12: case APP13: case APP14: case APP15: case COM: bytesToSkip = getFieldSize( f ); + if (bytesToSkip < markerSize) { + fclose(f); + throw ExifParsingError(); + } fseek( f, static_cast( bytesToSkip - markerSize ), SEEK_CUR ); break;