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);
}