Merge pull request #25864 from vrabaud:legacy

Make sure all the lines of a JPEG are read #25864

In case of corrupted JPEG, imread would still return a JPEG of the proper size (as indicated by the header) but with some uninitialized values. I do not have a short reproducer I can add as a test as this was found by our fuzzers.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
pull/22836/head
Vincent Rabaud 4 months ago committed by GitHub
parent 94b7a2d320
commit dfbd18e9aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      modules/imgcodecs/src/grfmt_jpeg.cpp

@ -499,7 +499,7 @@ bool JpegDecoder::readData( Mat& img )
for( int iy = 0 ; iy < m_height; iy ++ ) for( int iy = 0 ; iy < m_height; iy ++ )
{ {
uchar* data = img.ptr<uchar>(iy); uchar* data = img.ptr<uchar>(iy);
jpeg_read_scanlines( cinfo, &data, 1 ); if (jpeg_read_scanlines( cinfo, &data, 1 ) != 1) return false;
} }
} }
else else
@ -510,7 +510,7 @@ bool JpegDecoder::readData( Mat& img )
for( int iy = 0 ; iy < m_height; iy ++ ) for( int iy = 0 ; iy < m_height; iy ++ )
{ {
uchar* data = img.ptr<uchar>(iy); uchar* data = img.ptr<uchar>(iy);
jpeg_read_scanlines( cinfo, buffer, 1 ); if (jpeg_read_scanlines( cinfo, buffer, 1 ) != 1) return false;
if( color ) if( color )
{ {

Loading…
Cancel
Save