diff options
author | Jun Fang <jun_fang@foxitsoftware.com> | 2014-08-04 12:58:19 -0700 |
---|---|---|
committer | Jun Fang <jun_fang@foxitsoftware.com> | 2014-08-04 12:58:19 -0700 |
commit | f47ab5401690e29be552279e6327408bacde0c63 (patch) | |
tree | df151dd5ecfd8bba4ccb1884e2fa299f2cf5ed40 | |
parent | 465c2a84ba709d932040c9e80db508e93c138da6 (diff) | |
download | pdfium-f47ab5401690e29be552279e6327408bacde0c63.tar.xz |
Fix a segmentation fault in CPDF_DataAvail::CheckPage due to invalid usage of i++
BUG=387979
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/439733002
-rw-r--r-- | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp index b90c784f6f..af3fcc7094 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp @@ -3234,10 +3234,9 @@ void CPDF_DataAvail::ResetFirstCheck(int iPage) } FX_BOOL CPDF_DataAvail::CheckPage(IFX_DownloadHints* pHints) { - FX_DWORD i = 0; - FX_DWORD iLen = m_PageObjList.GetSize(); + FX_DWORD iPageObjs = m_PageObjList.GetSize(); CFX_DWordArray UnavailObjList; - for (; i < iLen; ++i) { + for (FX_DWORD i = 0; i < iPageObjs; ++i) { FX_DWORD dwPageObjNum = m_PageObjList.GetAt(i); FX_BOOL bExist = FALSE; CPDF_Object *pObj = GetObject(dwPageObjNum, pHints, &bExist); @@ -3276,16 +3275,15 @@ FX_BOOL CPDF_DataAvail::CheckPage(IFX_DownloadHints* pHints) m_PageObjList.Append(UnavailObjList); return FALSE; } - i = 0; - iLen = m_PagesArray.GetSize(); - for (; i < iLen; ++i) { + FX_DWORD iPages = m_PagesArray.GetSize(); + for (FX_DWORD i = 0; i < iPages; i++) { CPDF_Object *pPages = (CPDF_Object *)m_PagesArray.GetAt(i); if (!pPages) { continue; } if (!GetPageKids(m_pCurrentParser, pPages)) { pPages->Release(); - while (i++ < iLen) { + while (++i < iPages) { pPages = (CPDF_Object *)m_PagesArray.GetAt(i); pPages->Release(); } @@ -3298,7 +3296,6 @@ FX_BOOL CPDF_DataAvail::CheckPage(IFX_DownloadHints* pHints) m_PagesArray.RemoveAll(); if (!m_PageObjList.GetSize()) { m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; } return TRUE; } |