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 <utility> | 10 #include <utility> |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 if (pParams) { | 241 if (pParams) { |
242 K = pParams->GetIntegerFor("K"); | 242 K = pParams->GetIntegerFor("K"); |
243 EndOfLine = pParams->GetIntegerFor("EndOfLine"); | 243 EndOfLine = pParams->GetIntegerFor("EndOfLine"); |
244 ByteAlign = pParams->GetIntegerFor("EncodedByteAlign"); | 244 ByteAlign = pParams->GetIntegerFor("EncodedByteAlign"); |
245 BlackIs1 = pParams->GetIntegerFor("BlackIs1"); | 245 BlackIs1 = pParams->GetIntegerFor("BlackIs1"); |
246 Columns = pParams->GetIntegerFor("Columns", 1728); | 246 Columns = pParams->GetIntegerFor("Columns", 1728); |
247 Rows = pParams->GetIntegerFor("Rows"); | 247 Rows = pParams->GetIntegerFor("Rows"); |
248 if (Rows > USHRT_MAX) { | 248 if (Rows > USHRT_MAX) { |
249 Rows = 0; | 249 Rows = 0; |
250 } | 250 } |
251 if (Columns <= 0 || Rows < 0 || Columns > USHRT_MAX || Rows > USHRT_MAX) { | |
252 return nullptr; | |
253 } | |
254 } | 251 } |
255 return CPDF_ModuleMgr::Get()->GetFaxModule()->CreateDecoder( | 252 return CPDF_ModuleMgr::Get()->GetFaxModule()->CreateDecoder( |
256 src_buf, src_size, width, height, K, EndOfLine, ByteAlign, BlackIs1, | 253 src_buf, src_size, width, height, K, EndOfLine, ByteAlign, BlackIs1, |
257 Columns, Rows); | 254 Columns, Rows); |
258 } | 255 } |
259 | 256 |
260 static FX_BOOL CheckFlateDecodeParams(int Colors, | 257 static FX_BOOL CheckFlateDecodeParams(int Colors, |
261 int BitsPerComponent, | 258 int BitsPerComponent, |
262 int Columns) { | 259 int Columns) { |
263 if (Columns < 0) { | 260 if (Columns < 0) { |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 uint32_t src_size, | 569 uint32_t src_size, |
573 uint8_t*& dest_buf, | 570 uint8_t*& dest_buf, |
574 uint32_t& dest_size) { | 571 uint32_t& dest_size) { |
575 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); | 572 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); |
576 if (pEncoders) { | 573 if (pEncoders) { |
577 return pEncoders->GetFlateModule()->FlateOrLZWDecode( | 574 return pEncoders->GetFlateModule()->FlateOrLZWDecode( |
578 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); | 575 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); |
579 } | 576 } |
580 return 0; | 577 return 0; |
581 } | 578 } |
OLD | NEW |