| Index: core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| index e6f531da5305c510ccbb6043fecb8bb96d409cf1..d94fb5686a6c4972232fb7dd08766a3fa6fa5ab2 100644
|
| --- a/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| +++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| @@ -176,24 +176,21 @@ FX_DWORD RunLengthDecode(const uint8_t* src_buf,
|
| if (src_buf[i] < 128) {
|
| old = dest_size;
|
| dest_size += src_buf[i] + 1;
|
| - if (dest_size < old) {
|
| - return static_cast<FX_DWORD>(-1);
|
| - }
|
| + if (dest_size < old)
|
| + return FX_INVALID_OFFSET;
|
| i += src_buf[i] + 2;
|
| } else if (src_buf[i] > 128) {
|
| old = dest_size;
|
| dest_size += 257 - src_buf[i];
|
| - if (dest_size < old) {
|
| - return static_cast<FX_DWORD>(-1);
|
| - }
|
| + if (dest_size < old)
|
| + return FX_INVALID_OFFSET;
|
| i += 2;
|
| } else {
|
| break;
|
| }
|
| }
|
| - if (dest_size >= _STREAM_MAX_SIZE_) {
|
| - return static_cast<FX_DWORD>(-1);
|
| - }
|
| + if (dest_size >= _STREAM_MAX_SIZE_)
|
| + return FX_INVALID_OFFSET;
|
| dest_buf = FX_Alloc(uint8_t, dest_size);
|
| i = 0;
|
| int dest_count = 0;
|
|
|