Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
index 2f834ea400b8f3be2e1f3a313dabf30676746180..9fa26d87ae767ebd6fa21aa9906ad1223c3d2a3b 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
@@ -1003,7 +1003,15 @@ FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos, FX_FILESIZE& prev, FX_BOOL |
return FALSE; |
} |
if (m_pDocument) { |
- m_pDocument->InsertIndirectObject(pStream->m_ObjNum, pStream); |
+ CPDF_Dictionary * pDict = m_pDocument->GetRoot(); |
+ if (!pDict || pDict->GetObjNum() != pStream->m_ObjNum) { |
+ m_pDocument->InsertIndirectObject(pStream->m_ObjNum, pStream); |
+ } else { |
+ if (pStream->GetType() == PDFOBJ_STREAM) { |
+ pStream->Release(); |
+ } |
+ return FALSE; |
+ } |
} |
if (pStream->GetType() != PDFOBJ_STREAM) { |
return FALSE; |