| 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 |