summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_syntax_parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/parser/cpdf_syntax_parser.h')
-rw-r--r--core/fpdfapi/parser/cpdf_syntax_parser.h22
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;