Avoid crashing inside CPDF_DIBBase. Currently, CPDF_ImageRenderer::Continue() can fail in |Mode::kDefault|, and then attempt to restart rendering. In valid uses of this code path, the rendering mode switches to |Mode::kBlend|. In the crashing case, the rendering mode remains as |Mode::kDefault|. Avoid this crash by checking if the rendering mode stays the same and refusing to continue. BUG=pdfium:1219 Change-Id: I232cb4da2a248f923f09de7d4f08b30ae7dde832 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51450 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp index bc650ed..d873aa8 100644 --- a/core/fpdfapi/render/cpdf_imagerenderer.cpp +++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -554,6 +554,9 @@ if (!StartRenderDIBBase()) return false; + if (m_Mode == Mode::kDefault) + return false; + return Continue(pPause); }