| 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" |
| 11 #include "core/fxcrt/include/fx_safe_types.h" | 11 #include "core/fxcrt/include/fx_safe_types.h" |
| 12 | 12 |
| 13 namespace { | 13 namespace { |
| 14 | 14 |
| 15 const int kMaxImagePixels = INT_MAX - 31; | 15 const int kMaxImagePixels = INT_MAX - 31; |
| 16 const int kMaxImageBytes = kMaxImagePixels / 8; | 16 const int kMaxImageBytes = kMaxImagePixels / 8; |
| 17 | 17 |
| 18 } // namespace | 18 } // namespace |
| 19 | 19 |
| 20 CJBig2_Image::CJBig2_Image(int32_t w, int32_t h) | 20 CJBig2_Image::CJBig2_Image(int32_t w, int32_t h) |
| 21 : m_pData(nullptr), | 21 : m_pData(nullptr), |
| 22 m_nWidth(0), | 22 m_nWidth(0), |
| 23 m_nHeight(0), | 23 m_nHeight(0), |
| 24 m_nStride(0), | 24 m_nStride(0), |
| 25 m_bOwnsBuffer(true) { | 25 m_bOwnsBuffer(true) { |
| 26 if (w < 0 || h < 0 || w > kMaxImagePixels) | 26 if (w <= 0 || h <= 0 || w > kMaxImagePixels) |
| 27 return; | 27 return; |
| 28 | 28 |
| 29 int32_t stride_pixels = (w + 31) & ~31; | 29 int32_t stride_pixels = (w + 31) & ~31; |
| 30 if (h > kMaxImagePixels / stride_pixels) | 30 if (h > kMaxImagePixels / stride_pixels) |
| 31 return; | 31 return; |
| 32 | 32 |
| 33 m_nWidth = w; | 33 m_nWidth = w; |
| 34 m_nHeight = h; | 34 m_nHeight = h; |
| 35 m_nStride = stride_pixels / 8; | 35 m_nStride = stride_pixels / 8; |
| 36 m_pData = FX_Alloc2D(uint8_t, m_nStride, m_nHeight); | 36 m_pData = FX_Alloc2D(uint8_t, m_nStride, m_nHeight); |
| (...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 dp[2] = (uint8_t)(tmp >> 8); | 1087 dp[2] = (uint8_t)(tmp >> 8); |
| 1088 dp[3] = (uint8_t)tmp; | 1088 dp[3] = (uint8_t)tmp; |
| 1089 } | 1089 } |
| 1090 lineSrc += m_nStride; | 1090 lineSrc += m_nStride; |
| 1091 lineDst += pDst->m_nStride; | 1091 lineDst += pDst->m_nStride; |
| 1092 } | 1092 } |
| 1093 } | 1093 } |
| 1094 } | 1094 } |
| 1095 return 1; | 1095 return 1; |
| 1096 } | 1096 } |
| OLD | NEW |