| 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 2105635687edd0f3e6fe3f44ee6dff568e5b2508..d5664c29ab46c0dd09d090b776bea1c11094ffe9 100644
|
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
|
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
|
| @@ -247,12 +247,9 @@ FX_DWORD CPDF_Parser::StartParse(IFX_FileRead* pFileAccess,
|
| }
|
| FXSYS_qsort(m_SortedOffset.GetData(), m_SortedOffset.GetSize(),
|
| sizeof(FX_FILESIZE), CompareFileSize);
|
| - FX_DWORD RootObjNum = GetRootObjNum();
|
| - if (RootObjNum == 0) {
|
| + if (GetRootObjNum() == 0) {
|
| ReleaseEncryptHandler();
|
| - RebuildCrossRef();
|
| - RootObjNum = GetRootObjNum();
|
| - if (RootObjNum == 0)
|
| + if (!RebuildCrossRef() || GetRootObjNum() == 0)
|
| return PDFPARSE_ERROR_FORMAT;
|
|
|
| dwRet = SetEncryptHandler();
|
| @@ -975,7 +972,7 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| m_SortedOffset.Add(offset);
|
| }
|
| FX_Free(buffer);
|
| - return TRUE;
|
| + return m_pTrailer && m_CrossRef.GetSize() > 0;
|
| }
|
|
|
| FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos,
|
| @@ -1608,14 +1605,11 @@ FX_DWORD CPDF_Parser::StartAsynParse(IFX_FileRead* pFileAccess,
|
| }
|
| FXSYS_qsort(m_SortedOffset.GetData(), m_SortedOffset.GetSize(),
|
| sizeof(FX_FILESIZE), CompareFileSize);
|
| - FX_DWORD RootObjNum = GetRootObjNum();
|
| - if (RootObjNum == 0) {
|
| + if (GetRootObjNum() == 0) {
|
| ReleaseEncryptHandler();
|
| - RebuildCrossRef();
|
| - RootObjNum = GetRootObjNum();
|
| - if (RootObjNum == 0) {
|
| + if (!RebuildCrossRef() || GetRootObjNum() == 0)
|
| return PDFPARSE_ERROR_FORMAT;
|
| - }
|
| +
|
| dwRet = SetEncryptHandler();
|
| if (dwRet != PDFPARSE_ERROR_SUCCESS) {
|
| return dwRet;
|
|
|