summaryrefslogtreecommitdiff
path: root/core/fxcodec/jbig2/JBig2_PddProc.cpp
diff options
context:
space:
mode:
authorweili <weili@chromium.org>2016-05-26 18:13:58 -0700
committerCommit bot <commit-bot@chromium.org>2016-05-26 18:13:58 -0700
commit7aed76f53137a71491040c776ab2f8931e91061b (patch)
tree1ab0166c6161bcfbce931730c776fff0df0bbfba /core/fxcodec/jbig2/JBig2_PddProc.cpp
parent54ab2343c338f55735c37ed6751040791e1df1e2 (diff)
downloadpdfium-7aed76f53137a71491040c776ab2f8931e91061b.tar.xz
Fix a bug which may cause infinite loop
When the condition is "status == FXCODEC_STATUS_DECODE_TOBECONTINUE" while |status| never gets updated in the loop, it would enter infinite loop. Also, since Start_decode_MMR() never returns FXCODEC_STATUS_DECODE_TOBECONTINUE, there is no point to check on the return value for that. Review-Url: https://codereview.chromium.org/2013263002
Diffstat (limited to 'core/fxcodec/jbig2/JBig2_PddProc.cpp')
-rw-r--r--core/fxcodec/jbig2/JBig2_PddProc.cpp10
1 files changed, 3 insertions, 7 deletions
diff --git a/core/fxcodec/jbig2/JBig2_PddProc.cpp b/core/fxcodec/jbig2/JBig2_PddProc.cpp
index 12f66c3b7d..679a87a036 100644
--- a/core/fxcodec/jbig2/JBig2_PddProc.cpp
+++ b/core/fxcodec/jbig2/JBig2_PddProc.cpp
@@ -42,9 +42,8 @@ CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith(
}
FXCODEC_STATUS status =
pGRD->Start_decode_Arith(&BHDC, pArithDecoder, gbContext, nullptr);
- while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
- pGRD->Continue_decode(pPause);
- }
+ while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE)
+ status = pGRD->Continue_decode(pPause);
if (!BHDC)
return nullptr;
@@ -70,10 +69,7 @@ CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream,
pGRD->MMR = HDMMR;
pGRD->GBW = (GRAYMAX + 1) * HDPW;
pGRD->GBH = HDPH;
- FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream, nullptr);
- while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
- pGRD->Continue_decode(pPause);
- }
+ pGRD->Start_decode_MMR(&BHDC, pStream, nullptr);
if (!BHDC)
return nullptr;