diff options
author | npm <npm@chromium.org> | 2017-01-09 07:52:30 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2017-01-09 07:52:30 -0800 |
commit | 661008dde7356ee2ed69787125863539b73b041c (patch) | |
tree | dcf7541b8fa233078919bd81c3e257f91c25351a /core/fpdfapi/parser/cpdf_syntax_parser.cpp | |
parent | 5f92eab76505fc6be2e5373390591a55be489b21 (diff) | |
download | pdfium-661008dde7356ee2ed69787125863539b73b041c.tar.xz |
Do not parse references with invalid objnum
We should not have valid objects where the object number is
CPDF_Object::kInvalidObjNum.
BUG=pdfium:609
Review-Url: https://codereview.chromium.org/2610393004
Diffstat (limited to 'core/fpdfapi/parser/cpdf_syntax_parser.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_syntax_parser.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp index 48d77c2cbd..1b81b98c96 100644 --- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp +++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp @@ -386,8 +386,10 @@ std::unique_ptr<CPDF_Object> CPDF_SyntaxParser::GetObject( if (bIsNumber) { CFX_ByteString nextword2 = GetNextWord(nullptr); if (nextword2 == "R") { - return pdfium::MakeUnique<CPDF_Reference>(pObjList, - FXSYS_atoui(word.c_str())); + uint32_t objnum = FXSYS_atoui(word.c_str()); + if (objnum == CPDF_Object::kInvalidObjNum) + return nullptr; + return pdfium::MakeUnique<CPDF_Reference>(pObjList, objnum); } } m_Pos = SavedPos; @@ -505,8 +507,10 @@ std::unique_ptr<CPDF_Object> CPDF_SyntaxParser::GetObjectForStrict( if (bIsNumber) { CFX_ByteString nextword2 = GetNextWord(nullptr); if (nextword2 == "R") { - return pdfium::MakeUnique<CPDF_Reference>(pObjList, - FXSYS_atoui(word.c_str())); + uint32_t objnum = FXSYS_atoui(word.c_str()); + if (objnum == CPDF_Object::kInvalidObjNum) + return nullptr; + return pdfium::MakeUnique<CPDF_Reference>(pObjList, objnum); } } m_Pos = SavedPos; |