Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "parser_int.h" | 7 #include "parser_int.h" |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 243 | 243 |
| 244 m_pDocument->LoadDoc(); | 244 m_pDocument->LoadDoc(); |
| 245 if (!m_pDocument->GetRoot()) | 245 if (!m_pDocument->GetRoot()) |
| 246 return PDFPARSE_ERROR_FORMAT; | 246 return PDFPARSE_ERROR_FORMAT; |
| 247 } | 247 } |
| 248 FXSYS_qsort(m_SortedOffset.GetData(), m_SortedOffset.GetSize(), | 248 FXSYS_qsort(m_SortedOffset.GetData(), m_SortedOffset.GetSize(), |
| 249 sizeof(FX_FILESIZE), CompareFileSize); | 249 sizeof(FX_FILESIZE), CompareFileSize); |
| 250 FX_DWORD RootObjNum = GetRootObjNum(); | 250 FX_DWORD RootObjNum = GetRootObjNum(); |
| 251 if (RootObjNum == 0) { | 251 if (RootObjNum == 0) { |
| 252 ReleaseEncryptHandler(); | 252 ReleaseEncryptHandler(); |
| 253 RebuildCrossRef(); | 253 RebuildCrossRef(); |
|
Lei Zhang
2015/11/26 00:42:41
Should we check the result, now that it can actual
Wei Li
2015/11/26 01:22:22
Done.
| |
| 254 RootObjNum = GetRootObjNum(); | 254 RootObjNum = GetRootObjNum(); |
| 255 if (RootObjNum == 0) | 255 if (RootObjNum == 0) |
| 256 return PDFPARSE_ERROR_FORMAT; | 256 return PDFPARSE_ERROR_FORMAT; |
| 257 | 257 |
| 258 dwRet = SetEncryptHandler(); | 258 dwRet = SetEncryptHandler(); |
| 259 if (dwRet != PDFPARSE_ERROR_SUCCESS) | 259 if (dwRet != PDFPARSE_ERROR_SUCCESS) |
| 260 return dwRet; | 260 return dwRet; |
| 261 } | 261 } |
| 262 if (m_pSecurityHandler && !m_pSecurityHandler->IsMetadataEncrypted()) { | 262 if (m_pSecurityHandler && !m_pSecurityHandler->IsMetadataEncrypted()) { |
| 263 CPDF_Reference* pMetadata = | 263 CPDF_Reference* pMetadata = |
| (...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 968 last_trailer = m_Syntax.m_FileLen; | 968 last_trailer = m_Syntax.m_FileLen; |
| 969 } | 969 } |
| 970 FX_FILESIZE offset = last_trailer - m_Syntax.m_HeaderOffset; | 970 FX_FILESIZE offset = last_trailer - m_Syntax.m_HeaderOffset; |
| 971 void* pResult = | 971 void* pResult = |
| 972 FXSYS_bsearch(&offset, m_SortedOffset.GetData(), m_SortedOffset.GetSize(), | 972 FXSYS_bsearch(&offset, m_SortedOffset.GetData(), m_SortedOffset.GetSize(), |
| 973 sizeof(FX_FILESIZE), CompareFileSize); | 973 sizeof(FX_FILESIZE), CompareFileSize); |
| 974 if (pResult == NULL) { | 974 if (pResult == NULL) { |
| 975 m_SortedOffset.Add(offset); | 975 m_SortedOffset.Add(offset); |
| 976 } | 976 } |
| 977 FX_Free(buffer); | 977 FX_Free(buffer); |
| 978 return TRUE; | 978 return m_pTrailer && m_CrossRef.GetSize() > 0; |
| 979 } | 979 } |
| 980 | 980 |
| 981 FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos, | 981 FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos, |
| 982 FX_FILESIZE& prev, | 982 FX_FILESIZE& prev, |
| 983 FX_BOOL bMainXRef) { | 983 FX_BOOL bMainXRef) { |
| 984 CPDF_Object* pObject = ParseIndirectObjectAt(m_pDocument, pos, 0, nullptr); | 984 CPDF_Object* pObject = ParseIndirectObjectAt(m_pDocument, pos, 0, nullptr); |
| 985 if (!pObject) | 985 if (!pObject) |
| 986 return FALSE; | 986 return FALSE; |
| 987 | 987 |
| 988 if (m_pDocument) { | 988 if (m_pDocument) { |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1604 m_pDocument->LoadAsynDoc(m_pLinearized->GetDict()); | 1604 m_pDocument->LoadAsynDoc(m_pLinearized->GetDict()); |
| 1605 if (m_pDocument->GetRoot() == NULL) { | 1605 if (m_pDocument->GetRoot() == NULL) { |
| 1606 return PDFPARSE_ERROR_FORMAT; | 1606 return PDFPARSE_ERROR_FORMAT; |
| 1607 } | 1607 } |
| 1608 } | 1608 } |
| 1609 FXSYS_qsort(m_SortedOffset.GetData(), m_SortedOffset.GetSize(), | 1609 FXSYS_qsort(m_SortedOffset.GetData(), m_SortedOffset.GetSize(), |
| 1610 sizeof(FX_FILESIZE), CompareFileSize); | 1610 sizeof(FX_FILESIZE), CompareFileSize); |
| 1611 FX_DWORD RootObjNum = GetRootObjNum(); | 1611 FX_DWORD RootObjNum = GetRootObjNum(); |
| 1612 if (RootObjNum == 0) { | 1612 if (RootObjNum == 0) { |
| 1613 ReleaseEncryptHandler(); | 1613 ReleaseEncryptHandler(); |
| 1614 RebuildCrossRef(); | 1614 RebuildCrossRef(); |
|
Lei Zhang
2015/11/26 00:42:41
Ditto. In fact, this block looks a lot like the on
Wei Li
2015/11/26 01:22:22
Done. Yes, some might be put into common functions
| |
| 1615 RootObjNum = GetRootObjNum(); | 1615 RootObjNum = GetRootObjNum(); |
| 1616 if (RootObjNum == 0) { | 1616 if (RootObjNum == 0) { |
| 1617 return PDFPARSE_ERROR_FORMAT; | 1617 return PDFPARSE_ERROR_FORMAT; |
| 1618 } | 1618 } |
| 1619 dwRet = SetEncryptHandler(); | 1619 dwRet = SetEncryptHandler(); |
| 1620 if (dwRet != PDFPARSE_ERROR_SUCCESS) { | 1620 if (dwRet != PDFPARSE_ERROR_SUCCESS) { |
| 1621 return dwRet; | 1621 return dwRet; |
| 1622 } | 1622 } |
| 1623 } | 1623 } |
| 1624 if (m_pSecurityHandler && m_pSecurityHandler->IsMetadataEncrypted()) { | 1624 if (m_pSecurityHandler && m_pSecurityHandler->IsMetadataEncrypted()) { |
| (...skipping 3322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4947 if (!m_pLinearizedDict) | 4947 if (!m_pLinearizedDict) |
| 4948 return -1; | 4948 return -1; |
| 4949 CPDF_Array* pRange = m_pLinearizedDict->GetArray(FX_BSTRC("H")); | 4949 CPDF_Array* pRange = m_pLinearizedDict->GetArray(FX_BSTRC("H")); |
| 4950 if (!pRange) | 4950 if (!pRange) |
| 4951 return -1; | 4951 return -1; |
| 4952 CPDF_Object* pStreamLen = pRange->GetElementValue(1); | 4952 CPDF_Object* pStreamLen = pRange->GetElementValue(1); |
| 4953 if (!pStreamLen) | 4953 if (!pStreamLen) |
| 4954 return -1; | 4954 return -1; |
| 4955 return pStreamLen->GetInteger(); | 4955 return pStreamLen->GetInteger(); |
| 4956 } | 4956 } |
| OLD | NEW |