| OLD | NEW |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/fpdfapi/fpdf_parser/include/ipdf_data_avail.h" | 7 #include "core/fpdfapi/fpdf_parser/include/ipdf_data_avail.h" |
| 8 | 8 |
| 9 #include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" | 9 #include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" |
| 10 #include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" | 10 #include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" |
| (...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 uint32_t objnum, | 785 uint32_t objnum, |
| 786 CPDF_IndirectObjectHolder* pObjList) { | 786 CPDF_IndirectObjectHolder* pObjList) { |
| 787 FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); | 787 FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); |
| 788 m_syntaxParser.RestorePos(pos); | 788 m_syntaxParser.RestorePos(pos); |
| 789 | 789 |
| 790 bool bIsNumber; | 790 bool bIsNumber; |
| 791 CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); | 791 CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); |
| 792 if (!bIsNumber) | 792 if (!bIsNumber) |
| 793 return nullptr; | 793 return nullptr; |
| 794 | 794 |
| 795 uint32_t parser_objnum = FXSYS_atoui(word); | 795 uint32_t parser_objnum = FXSYS_atoui(word.c_str()); |
| 796 if (objnum && parser_objnum != objnum) | 796 if (objnum && parser_objnum != objnum) |
| 797 return nullptr; | 797 return nullptr; |
| 798 | 798 |
| 799 word = m_syntaxParser.GetNextWord(&bIsNumber); | 799 word = m_syntaxParser.GetNextWord(&bIsNumber); |
| 800 if (!bIsNumber) | 800 if (!bIsNumber) |
| 801 return nullptr; | 801 return nullptr; |
| 802 | 802 |
| 803 uint32_t gennum = FXSYS_atoui(word); | 803 uint32_t gennum = FXSYS_atoui(word.c_str()); |
| 804 if (m_syntaxParser.GetKeyword() != "obj") { | 804 if (m_syntaxParser.GetKeyword() != "obj") { |
| 805 m_syntaxParser.RestorePos(SavedPos); | 805 m_syntaxParser.RestorePos(SavedPos); |
| 806 return nullptr; | 806 return nullptr; |
| 807 } | 807 } |
| 808 | 808 |
| 809 CPDF_Object* pObj = | 809 CPDF_Object* pObj = |
| 810 m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); | 810 m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); |
| 811 m_syntaxParser.RestorePos(SavedPos); | 811 m_syntaxParser.RestorePos(SavedPos); |
| 812 return pObj; | 812 return pObj; |
| 813 } | 813 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 842 | 842 |
| 843 m_dwHeaderOffset = offset; | 843 m_dwHeaderOffset = offset; |
| 844 m_syntaxParser.InitParser(file.get(), offset); | 844 m_syntaxParser.InitParser(file.get(), offset); |
| 845 m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); | 845 m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); |
| 846 | 846 |
| 847 bool bNumber; | 847 bool bNumber; |
| 848 CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); | 848 CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); |
| 849 if (!bNumber) | 849 if (!bNumber) |
| 850 return FALSE; | 850 return FALSE; |
| 851 | 851 |
| 852 uint32_t objnum = FXSYS_atoui(wordObjNum); | 852 uint32_t objnum = FXSYS_atoui(wordObjNum.c_str()); |
| 853 if (m_pLinearized) { | 853 if (m_pLinearized) { |
| 854 m_pLinearized->Release(); | 854 m_pLinearized->Release(); |
| 855 m_pLinearized = nullptr; | 855 m_pLinearized = nullptr; |
| 856 } | 856 } |
| 857 | 857 |
| 858 m_pLinearized = | 858 m_pLinearized = |
| 859 ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); | 859 ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); |
| 860 if (!m_pLinearized) | 860 if (!m_pLinearized) |
| 861 return FALSE; | 861 return FALSE; |
| 862 | 862 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { | 894 if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { |
| 895 m_syntaxParser.GetNextWord(nullptr); | 895 m_syntaxParser.GetNextWord(nullptr); |
| 896 | 896 |
| 897 bool bNumber; | 897 bool bNumber; |
| 898 CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber); | 898 CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber); |
| 899 if (!bNumber) { | 899 if (!bNumber) { |
| 900 m_docStatus = PDF_DATAAVAIL_ERROR; | 900 m_docStatus = PDF_DATAAVAIL_ERROR; |
| 901 return FALSE; | 901 return FALSE; |
| 902 } | 902 } |
| 903 | 903 |
| 904 m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str); | 904 m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str.c_str()); |
| 905 if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) { | 905 if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) { |
| 906 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; | 906 m_docStatus = PDF_DATAAVAIL_LOADALLFILE; |
| 907 return TRUE; | 907 return TRUE; |
| 908 } | 908 } |
| 909 | 909 |
| 910 m_dwLastXRefOffset = m_dwXRefOffset; | 910 m_dwLastXRefOffset = m_dwXRefOffset; |
| 911 SetStartOffset(m_dwXRefOffset); | 911 SetStartOffset(m_dwXRefOffset); |
| 912 m_docStatus = PDF_DATAAVAIL_CROSSREF; | 912 m_docStatus = PDF_DATAAVAIL_CROSSREF; |
| 913 return TRUE; | 913 return TRUE; |
| 914 } | 914 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 936 m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); | 936 m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); |
| 937 | 937 |
| 938 ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); | 938 ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); |
| 939 m_parser.m_pSyntax->InitParser(file.get(), 0); | 939 m_parser.m_pSyntax->InitParser(file.get(), 0); |
| 940 | 940 |
| 941 bool bNumber; | 941 bool bNumber; |
| 942 CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); | 942 CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); |
| 943 if (!bNumber) | 943 if (!bNumber) |
| 944 return -1; | 944 return -1; |
| 945 | 945 |
| 946 uint32_t objNum = FXSYS_atoui(objnum); | 946 uint32_t objNum = FXSYS_atoui(objnum.c_str()); |
| 947 CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); | 947 CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); |
| 948 if (!pObj) { | 948 if (!pObj) { |
| 949 m_Pos += m_parser.m_pSyntax->SavePos(); | 949 m_Pos += m_parser.m_pSyntax->SavePos(); |
| 950 return 0; | 950 return 0; |
| 951 } | 951 } |
| 952 | 952 |
| 953 CPDF_Dictionary* pDict = pObj->GetDict(); | 953 CPDF_Dictionary* pDict = pObj->GetDict(); |
| 954 CPDF_Name* pName = ToName(pDict ? pDict->GetObjectBy("Type") : nullptr); | 954 CPDF_Name* pName = ToName(pDict ? pDict->GetObjectBy("Type") : nullptr); |
| 955 if (pName) { | 955 if (pName) { |
| 956 if (pName->GetString() == "XRef") { | 956 if (pName->GetString() == "XRef") { |
| (...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1832 return FormAvailable; | 1832 return FormAvailable; |
| 1833 } | 1833 } |
| 1834 | 1834 |
| 1835 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} | 1835 CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} |
| 1836 | 1836 |
| 1837 CPDF_DataAvail::PageNode::~PageNode() { | 1837 CPDF_DataAvail::PageNode::~PageNode() { |
| 1838 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) | 1838 for (int32_t i = 0; i < m_childNode.GetSize(); ++i) |
| 1839 delete m_childNode[i]; | 1839 delete m_childNode[i]; |
| 1840 m_childNode.RemoveAll(); | 1840 m_childNode.RemoveAll(); |
| 1841 } | 1841 } |
| OLD | NEW |