Chromium Code Reviews| Index: core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| index 6b6f16109bcaf0737f892260d7804c2f52691cf7..8aaebf46a211ec06a963eef200a15479b93dbd40 100644 |
| --- a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| +++ b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp |
| @@ -103,15 +103,20 @@ int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream* pStream) { |
| FX_DWORD HTLOW; |
| FX_DWORD HTHIGH; |
| if (pStream->readInteger(&HTLOW) == -1 || |
| - pStream->readInteger(&HTHIGH) == -1 || HTLOW > HTHIGH) { |
| + pStream->readInteger(&HTHIGH) == -1) { |
| return FALSE; |
| } |
| + const int low = static_cast<int>(HTLOW); |
|
Tom Sepez
2015/12/18 23:10:50
do you want int32_t here?
|
| + const int high = static_cast<int>(HTHIGH); |
| + if (low > high) |
| + return false; |
| + |
| FX_DWORD nSize = 16; |
| PREFLEN = FX_Alloc(int, nSize); |
| RANGELEN = FX_Alloc(int, nSize); |
| RANGELOW = FX_Alloc(int, nSize); |
| - FX_DWORD CURRANGELOW = HTLOW; |
| + int cur_low = low; |
| NTEMP = 0; |
| do { |
| HT_CHECK_MEMORY_ADJUST |
| @@ -119,23 +124,23 @@ int CJBig2_HuffmanTable::parseFromCodedBuffer(CJBig2_BitStream* pStream) { |
| (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) { |
| return FALSE; |
| } |
| - RANGELOW[NTEMP] = CURRANGELOW; |
| - CURRANGELOW = CURRANGELOW + (1 << RANGELEN[NTEMP]); |
| + RANGELOW[NTEMP] = cur_low; |
| + cur_low += (1 << RANGELEN[NTEMP]); |
| NTEMP = NTEMP + 1; |
| - } while (CURRANGELOW < HTHIGH); |
| + } while (cur_low < high); |
| HT_CHECK_MEMORY_ADJUST |
| if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) |
| return FALSE; |
| RANGELEN[NTEMP] = 32; |
| - RANGELOW[NTEMP] = HTLOW - 1; |
| + RANGELOW[NTEMP] = low - 1; |
| ++NTEMP; |
| HT_CHECK_MEMORY_ADJUST |
| if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) |
| return FALSE; |
| RANGELEN[NTEMP] = 32; |
| - RANGELOW[NTEMP] = HTHIGH; |
| + RANGELOW[NTEMP] = high; |
| NTEMP = NTEMP + 1; |
| if (HTOOB) { |
| HT_CHECK_MEMORY_ADJUST |