diff options
author | Jun Fang <jun_fang@foxitsoftware.com> | 2015-12-11 22:01:55 -0800 |
---|---|---|
committer | Jun Fang <jun_fang@foxitsoftware.com> | 2015-12-11 22:01:55 -0800 |
commit | e0bb17b98ce909edee8b14c2b2036b71b3f75593 (patch) | |
tree | af7fec33f4b9122e7fb9d542f6b051efed01c4c1 /core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp | |
parent | 7554490c37069879f302d9de07eff5d486518c59 (diff) | |
download | pdfium-e0bb17b98ce909edee8b14c2b2036b71b3f75593.tar.xz |
Merge to XFA: Fix memory leaks involving InsertIndirectObject()
BUG=447331
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1514093002 .
Review URL: https://codereview.chromium.org/1515403003 .
Diffstat (limited to 'core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp')
-rw-r--r-- | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp index ca3a5f67a2..61d9749c8e 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp @@ -987,16 +987,17 @@ FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE* pos, FX_BOOL bMainXRef) { CPDF_Object* pObject = ParseIndirectObjectAt(m_pDocument, *pos, 0, nullptr); if (!pObject) return FALSE; - if (m_pDocument) { + FX_BOOL bInserted = FALSE; CPDF_Dictionary* pDict = m_pDocument->GetRoot(); if (!pDict || pDict->GetObjNum() != pObject->m_ObjNum) { - m_pDocument->InsertIndirectObject(pObject->m_ObjNum, pObject); + bInserted = m_pDocument->InsertIndirectObject(pObject->m_ObjNum, pObject); } else { if (pObject->IsStream()) pObject->Release(); - return FALSE; } + if (!bInserted) + return FALSE; } CPDF_Stream* pStream = pObject->AsStream(); @@ -4553,7 +4554,8 @@ CPDF_Dictionary* CPDF_DataAvail::GetPage(int index) { if (!pPageDict) { return nullptr; } - m_pDocument->InsertIndirectObject(dwObjNum, pPageDict); + if (!m_pDocument->InsertIndirectObject(dwObjNum, pPageDict)) + return nullptr; return pPageDict->GetDict(); } } |