diff options
author | foxit <jun_fang@foxitsoftware.com> | 2014-07-07 14:06:56 -0700 |
---|---|---|
committer | foxit <jun_fang@foxitsoftware.com> | 2014-07-07 14:06:56 -0700 |
commit | a26b3289515acebc1e936234a1b076d4a9a3fca5 (patch) | |
tree | 435ed06270ad2417b5a1bbf38d23a8c1e29b03b2 /core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp | |
parent | f3227aeb0b4243a0ce4da5f6adfa1ebbfc902d17 (diff) | |
download | pdfium-a26b3289515acebc1e936234a1b076d4a9a3fca5.tar.xz |
fix a crash issue in _CMapLookupCallback
BUG=382242
R=palmer@chromium.org
Review URL: https://codereview.chromium.org/341333004
Diffstat (limited to 'core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp')
-rw-r--r-- | core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp index 6c93bcb39f..e945ab52a0 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp @@ -1271,9 +1271,15 @@ void CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pO if (objnum == 0 || pObj == NULL) { return; } - FX_LPVOID value; + FX_LPVOID value = NULL; if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { - ((CPDF_Object*)value)->Destroy(); + if (value) + { + if (pObj->GetGenNum() <= ((CPDF_Object*)value)->GetGenNum()) + return; + else + ((CPDF_Object*)value)->Destroy(); + } } pObj->m_ObjNum = objnum; m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)objnum, pObj); |