diff options
Diffstat (limited to 'core/fpdfapi/parser/cpdf_syntax_parser.h')
-rw-r--r-- | core/fpdfapi/parser/cpdf_syntax_parser.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.h b/core/fpdfapi/parser/cpdf_syntax_parser.h index d522b4ae7a..d3bca11e59 100644 --- a/core/fpdfapi/parser/cpdf_syntax_parser.h +++ b/core/fpdfapi/parser/cpdf_syntax_parser.h @@ -18,6 +18,7 @@ class CPDF_CryptoHandler; class CPDF_Dictionary; class CPDF_IndirectObjectHolder; class CPDF_Object; +class CPDF_ReadValidator; class CPDF_Stream; class IFX_SeekableReadStream; @@ -30,6 +31,10 @@ class CPDF_SyntaxParser { void InitParser(const CFX_RetainPtr<IFX_SeekableReadStream>& pFileAccess, uint32_t HeaderOffset); + void InitParserWithValidator( + const CFX_RetainPtr<CPDF_ReadValidator>& pValidator, + uint32_t HeaderOffset); + FX_FILESIZE GetPos() const { return m_Pos; } void SetPos(FX_FILESIZE pos) { m_Pos = std::min(pos, m_FileLen); } @@ -55,6 +60,10 @@ class CPDF_SyntaxParser { CFX_RetainPtr<IFX_SeekableReadStream> GetFileAccess() const; + const CFX_RetainPtr<CPDF_ReadValidator>& GetValidator() const { + return m_pFileAccess; + } + private: friend class CPDF_Parser; friend class CPDF_DataAvail; @@ -86,9 +95,20 @@ class CPDF_SyntaxParser { static_cast<FX_FILESIZE>(m_BufOffset + m_BufSize) <= pos; } + std::unique_ptr<CPDF_Object> GetObjectInternal( + CPDF_IndirectObjectHolder* pObjList, + uint32_t objnum, + uint32_t gennum, + bool bDecrypt); + + std::unique_ptr<CPDF_Object> GetObjectForStrictInternal( + CPDF_IndirectObjectHolder* pObjList, + uint32_t objnum, + uint32_t gennum); + FX_FILESIZE m_Pos; uint32_t m_MetadataObjnum; - CFX_RetainPtr<IFX_SeekableReadStream> m_pFileAccess; + CFX_RetainPtr<CPDF_ReadValidator> m_pFileAccess; FX_FILESIZE m_HeaderOffset; FX_FILESIZE m_FileLen; uint8_t* m_pFileBuf; |