OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h" | 7 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h" |
8 | 8 |
9 #include <limits.h> | 9 #include <limits.h> |
10 #include <vector> | 10 #include <vector> |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 uint8_t*& dest_buf, | 170 uint8_t*& dest_buf, |
171 FX_DWORD& dest_size) { | 171 FX_DWORD& dest_size) { |
172 FX_DWORD i = 0; | 172 FX_DWORD i = 0; |
173 FX_DWORD old; | 173 FX_DWORD old; |
174 dest_size = 0; | 174 dest_size = 0; |
175 while (i < src_size) { | 175 while (i < src_size) { |
176 if (src_buf[i] < 128) { | 176 if (src_buf[i] < 128) { |
177 old = dest_size; | 177 old = dest_size; |
178 dest_size += src_buf[i] + 1; | 178 dest_size += src_buf[i] + 1; |
179 if (dest_size < old) { | 179 if (dest_size < old) { |
180 return (FX_DWORD)-1; | 180 return static_cast<FX_DWORD>(-1); |
181 } | 181 } |
182 i += src_buf[i] + 2; | 182 i += src_buf[i] + 2; |
183 } else if (src_buf[i] > 128) { | 183 } else if (src_buf[i] > 128) { |
184 old = dest_size; | 184 old = dest_size; |
185 dest_size += 257 - src_buf[i]; | 185 dest_size += 257 - src_buf[i]; |
186 if (dest_size < old) { | 186 if (dest_size < old) { |
187 return (FX_DWORD)-1; | 187 return static_cast<FX_DWORD>(-1); |
188 } | 188 } |
189 i += 2; | 189 i += 2; |
190 } else { | 190 } else { |
191 break; | 191 break; |
192 } | 192 } |
193 } | 193 } |
194 if (dest_size >= _STREAM_MAX_SIZE_) { | 194 if (dest_size >= _STREAM_MAX_SIZE_) { |
195 return -1; | 195 return static_cast<FX_DWORD>(-1); |
196 } | 196 } |
197 dest_buf = FX_Alloc(uint8_t, dest_size); | 197 dest_buf = FX_Alloc(uint8_t, dest_size); |
198 i = 0; | 198 i = 0; |
199 int dest_count = 0; | 199 int dest_count = 0; |
200 while (i < src_size) { | 200 while (i < src_size) { |
201 if (src_buf[i] < 128) { | 201 if (src_buf[i] < 128) { |
202 FX_DWORD copy_len = src_buf[i] + 1; | 202 FX_DWORD copy_len = src_buf[i] + 1; |
203 FX_DWORD buf_left = src_size - i - 1; | 203 FX_DWORD buf_left = src_size - i - 1; |
204 if (buf_left < copy_len) { | 204 if (buf_left < copy_len) { |
205 FX_DWORD delta = copy_len - buf_left; | 205 FX_DWORD delta = copy_len - buf_left; |
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
583 FX_DWORD src_size, | 583 FX_DWORD src_size, |
584 uint8_t*& dest_buf, | 584 uint8_t*& dest_buf, |
585 FX_DWORD& dest_size) { | 585 FX_DWORD& dest_size) { |
586 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); | 586 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); |
587 if (pEncoders) { | 587 if (pEncoders) { |
588 return pEncoders->GetFlateModule()->FlateOrLZWDecode( | 588 return pEncoders->GetFlateModule()->FlateOrLZWDecode( |
589 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); | 589 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); |
590 } | 590 } |
591 return 0; | 591 return 0; |
592 } | 592 } |
OLD | NEW |