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 <limits.h> | 7 #include <limits.h> |
8 | 8 |
9 #include "core/fxcodec/jbig2/JBig2_Image.h" | 9 #include "core/fxcodec/jbig2/JBig2_Image.h" |
10 #include "core/fxcrt/include/fx_coordinates.h" | 10 #include "core/fxcrt/include/fx_coordinates.h" |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 } | 209 } |
210 return pImage; | 210 return pImage; |
211 } | 211 } |
212 void CJBig2_Image::expand(int32_t h, FX_BOOL v) { | 212 void CJBig2_Image::expand(int32_t h, FX_BOOL v) { |
213 if (!m_pData || h <= m_nHeight) { | 213 if (!m_pData || h <= m_nHeight) { |
214 return; | 214 return; |
215 } | 215 } |
216 uint32_t dwH = pdfium::base::checked_cast<uint32_t>(h); | 216 uint32_t dwH = pdfium::base::checked_cast<uint32_t>(h); |
217 uint32_t dwStride = pdfium::base::checked_cast<uint32_t>(m_nStride); | 217 uint32_t dwStride = pdfium::base::checked_cast<uint32_t>(m_nStride); |
218 uint32_t dwHeight = pdfium::base::checked_cast<uint32_t>(m_nHeight); | 218 uint32_t dwHeight = pdfium::base::checked_cast<uint32_t>(m_nHeight); |
219 FX_SAFE_DWORD safeMemSize = dwH; | 219 FX_SAFE_UINT32 safeMemSize = dwH; |
220 safeMemSize *= dwStride; | 220 safeMemSize *= dwStride; |
221 if (!safeMemSize.IsValid()) { | 221 if (!safeMemSize.IsValid()) { |
222 return; | 222 return; |
223 } | 223 } |
224 // The guaranteed reallocated memory is to be < 4GB (unsigned int). | 224 // The guaranteed reallocated memory is to be < 4GB (unsigned int). |
225 m_pData = FX_Realloc(uint8_t, m_pData, safeMemSize.ValueOrDie()); | 225 m_pData = FX_Realloc(uint8_t, m_pData, safeMemSize.ValueOrDie()); |
226 | 226 |
227 // The result of dwHeight * dwStride doesn't overflow after the | 227 // The result of dwHeight * dwStride doesn't overflow after the |
228 // checking of safeMemSize. | 228 // checking of safeMemSize. |
229 // The same as the result of (dwH - dwHeight) * dwStride) because | 229 // The same as the result of (dwH - dwHeight) * dwStride) because |
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1073 dp[2] = (uint8_t)(tmp >> 8); | 1073 dp[2] = (uint8_t)(tmp >> 8); |
1074 dp[3] = (uint8_t)tmp; | 1074 dp[3] = (uint8_t)tmp; |
1075 } | 1075 } |
1076 lineSrc += m_nStride; | 1076 lineSrc += m_nStride; |
1077 lineDst += pDst->m_nStride; | 1077 lineDst += pDst->m_nStride; |
1078 } | 1078 } |
1079 } | 1079 } |
1080 } | 1080 } |
1081 return 1; | 1081 return 1; |
1082 } | 1082 } |
OLD | NEW |