diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2017-08-03 16:08:40 +0300 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-08 22:27:49 +0000 |
commit | 31d706bd8122830a15c574ba461e8f1a41427b9c (patch) | |
tree | 1bcf798bae1e5d3ed6e185216aad6cbc246004c1 /core/fpdfapi/parser/cpdf_syntax_parser.h | |
parent | 2e5f0ae97c163841c93c891aa5933adbde47e710 (diff) | |
download | pdfium-31d706bd8122830a15c574ba461e8f1a41427b9c.tar.xz |
Add validator into CPDF_SyntaxParser.
Change-Id: I7fe8dcd8854e2f08b7b0ee53bde6c864108142ff
Reviewed-on: https://pdfium-review.googlesource.com/9571
Reviewed-by: Lei Zhang <thestig@chromium.org>
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; |