diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-08-22 09:04:58 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-23 12:52:19 +0000 |
commit | 77d8317f2e6bb9c75d96390fdf843b86694ba6d2 (patch) | |
tree | c634a60674bb6e45d357a7d89d9287994fcbea15 | |
parent | 627b316e1e521547395a280a9a095c77b046988e (diff) | |
download | pdfium-77d8317f2e6bb9c75d96390fdf843b86694ba6d2.tar.xz |
Verify image returned from AddImage
The ::AddImage call can return a nullptr if there is no stream provided.
This CL adds the missing null check on the returned object when lookikng
at the image.
Bug: chromium:756418, chromium:753700
Change-Id: I48032c0f421c8889827540ae91f404ef0f503bfe
Reviewed-on: https://pdfium-review.googlesource.com/11532
Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
-rw-r--r-- | core/fpdfapi/page/cpdf_streamcontentparser.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp index 1d5ddaeed2..42ed3fc3b4 100644 --- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp +++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp @@ -660,7 +660,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() { CPDF_ImageObject* pObj = AddImage(std::move(pStream)); // Record the bounding box of this image, so rendering code can draw it // properly. - if (pObj->GetImage()->IsMask()) + if (pObj && pObj->GetImage()->IsMask()) m_pObjectHolder->AddImageMaskBoundingBox(pObj->GetRect()); } @@ -733,7 +733,7 @@ void CPDF_StreamContentParser::Handle_ExecuteXObject() { CPDF_ImageObject* pObj = AddImage(m_pLastImage); // Record the bounding box of this image, so rendering code can draw it // properly. - if (pObj->GetImage()->IsMask()) + if (pObj && pObj->GetImage()->IsMask()) m_pObjectHolder->AddImageMaskBoundingBox(pObj->GetRect()); return; } @@ -755,9 +755,11 @@ void CPDF_StreamContentParser::Handle_ExecuteXObject() { : AddImage(pXObject->GetObjNum()); m_LastImageName = name; - m_pLastImage = pObj->GetImage(); - if (m_pLastImage->IsMask()) - m_pObjectHolder->AddImageMaskBoundingBox(pObj->GetRect()); + if (pObj) { + m_pLastImage = pObj->GetImage(); + if (m_pLastImage->IsMask()) + m_pObjectHolder->AddImageMaskBoundingBox(pObj->GetRect()); + } } else if (type == "Form") { AddForm(pXObject); } |