Merge to M47: Add a missing setjmp() to CCodec_JpegDecoder::v_GetNextLine().
If jpeg_read_scanlines() ends up calling the error callback, we longjmp
into some undefined state.
BUG=558840
TBR=thestig@chromium.org
Original Review URL: https://codereview.chromium.org/1463563003 .
(cherry picked from commit 06e33aec03f13c76d9eff5c09cb03e142b0c5ef1)
Review URL: https://codereview.chromium.org/1471913005 .
diff --git a/core/src/fxcodec/codec/fx_codec_jpeg.cpp b/core/src/fxcodec/codec/fx_codec_jpeg.cpp
index 0a38fc8..76096f3 100644
--- a/core/src/fxcodec/codec/fx_codec_jpeg.cpp
+++ b/core/src/fxcodec/codec/fx_codec_jpeg.cpp
@@ -502,9 +502,13 @@
if (m_pExtProvider) {
return m_pExtProvider->GetNextLine(m_pExtContext);
}
+
+ if (setjmp(m_JmpBuf) == -1)
+ return nullptr;
+
int nlines = jpeg_read_scanlines(&cinfo, &m_pScanlineBuf, 1);
if (nlines < 1) {
- return NULL;
+ return nullptr;
}
return m_pScanlineBuf;
}