Prevent base::CheckedNumeric from leaking outside of pdfium.
authorTom Sepez <tsepez@chromium.org>
Wed, 4 Feb 2015 18:37:17 +0000 (10:37 -0800)
committerTom Sepez <tsepez@chromium.org>
Wed, 4 Feb 2015 18:37:17 +0000 (10:37 -0800)
Headers in /include directories should be free of implementation details
from third_party.  Put the types into a new header outside of /include.

Requires https://codereview.chromium.org/902443003/ before a version containing this patch is rolled into chromium.

R=jam@chromium.org

Review URL: https://codereview.chromium.org/896023003

13 files changed:
BUILD.gn
core/include/fxcrt/fx_stream.h
core/include/fxcrt/fx_system.h
core/src/fdrm/crypto/fx_crypt.cpp
core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp
core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
core/src/fpdfdoc/doc_link.cpp
core/src/fxcrt/extension.h
core/src/fxcrt/fx_safe_types.h [new file with mode: 0644]
fpdfsdk/src/fpdfview.cpp
fpdfsdk/src/pdfwindow/PWL_Edit.cpp
pdfium.gyp

index d71002d..12842d3 100644 (file)
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -490,6 +490,7 @@ static_library("fxcrt") {
     "core/include/fxcrt/fx_ucd.h",
     "core/include/fxcrt/fx_xml.h",
     "core/src/fxcrt/extension.h",
+    "core/src/fxcrt/fx_safe_types.h",
     "core/src/fxcrt/fxcrt_platforms.cpp",
     "core/src/fxcrt/fxcrt_platforms.h",
     "core/src/fxcrt/fxcrt_posix.cpp",
index e54af57..b378450 100644 (file)
@@ -30,7 +30,6 @@ FX_DEFINEHANDLE(FX_HFILE)
 #endif
 #define FX_FILESIZE                    off_t
 #endif
-typedef base::CheckedNumeric<FX_FILESIZE>    FX_SAFE_FILESIZE;
 #define FX_GETBYTEOFFSET32(a)  0
 #define FX_GETBYTEOFFSET40(a)  0
 #define FX_GETBYTEOFFSET48(a)  0
index 355bd74..b31a603 100644 (file)
@@ -276,11 +276,6 @@ int                        FXSYS_round(FX_FLOAT f);
 #ifdef __cplusplus
 };
 
-#include "../../../third_party/numerics/safe_math.h"
-typedef base::CheckedNumeric<FX_DWORD> FX_SAFE_DWORD;
-typedef base::CheckedNumeric<FX_INT32> FX_SAFE_INT32;
-typedef base::CheckedNumeric<size_t>   FX_SAFE_SIZE_T;
-
 #if defined(__clang__) || _MSC_VER >= 1700
 #define FX_FINAL final
 #define FX_OVERRIDE override
index 8128f91..1fbba99 100644 (file)
@@ -6,6 +6,8 @@
 
 #include "../../../include/fxcrt/fx_basic.h"
 #include "../../../include/fdrm/fx_crypt.h"
+#include "../../../src/fxcrt/fx_safe_types.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
index 3ceb0f7..7d727f3 100644 (file)
@@ -4,11 +4,14 @@
  
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include <limits.h>
+
 #include "../../../include/fpdfapi/fpdf_page.h"
 #include "../../../include/fpdfapi/fpdf_module.h"
+#include "../../../src/fxcrt/fx_safe_types.h"
 #include "../../../third_party/numerics/safe_conversions_impl.h"
 #include "pageint.h"
-#include <limits.h>
+
 class CPDF_PSEngine;
 typedef enum {PSOP_ADD, PSOP_SUB, PSOP_MUL, PSOP_DIV, PSOP_IDIV, PSOP_MOD,
               PSOP_NEG, PSOP_ABS, PSOP_CEILING, PSOP_FLOOR, PSOP_ROUND, PSOP_TRUNCATE,
index 3d999ec..340da6f 100644 (file)
@@ -7,7 +7,7 @@
 #include "../../../include/fpdfapi/fpdf_parser.h"
 #include "../../../include/fpdfapi/fpdf_module.h"
 #include "../../../include/fpdfapi/fpdf_page.h"
-#include "../../../../third_party/numerics/safe_math.h"
+#include "../../../src/fxcrt/fx_safe_types.h"
 #include "../fpdf_page/pageint.h"
 #include <utility>
 #include <vector>
index 1637655..f938628 100644 (file)
@@ -9,9 +9,9 @@
 #include "../../../include/fpdfapi/fpdf_module.h"
 #include "../../../include/fpdfapi/fpdf_render.h"
 #include "../../../include/fpdfapi/fpdf_pageobj.h"
+#include "../../../src/fxcrt/fx_safe_types.h"
 #include "../fpdf_page/pageint.h"
 #include "render_int.h"
-#include "../../../../third_party/numerics/safe_math.h"
 
 static unsigned int _GetBits8(FX_LPCBYTE pData, int bitpos, int nbits)
 {
index 0d1b98e..c27333e 100644 (file)
@@ -5,6 +5,8 @@
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
 #include "../../include/fpdfdoc/fpdf_doc.h"
+#include "../../src/fxcrt/fx_safe_types.h"
+
 CPDF_LinkList::~CPDF_LinkList()
 {
     FX_POSITION pos = m_PageMap.GetStartPosition();
index c23a2e3..961e0ec 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef _FXCRT_EXTENSION_IMP_
 #define _FXCRT_EXTENSION_IMP_
 
+#include "fx_safe_types.h"
+
 class IFXCRT_FileAccess
 {
 public:
diff --git a/core/src/fxcrt/fx_safe_types.h b/core/src/fxcrt/fx_safe_types.h
new file mode 100644 (file)
index 0000000..794e1f1
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef FX_SAFE_TYPES_H_
+#define FX_SAFE_TYPES_H_
+
+#include <stdlib.h>  // For size_t.
+
+#include "../../../third_party/numerics/safe_math.h"
+
+typedef base::CheckedNumeric<FX_DWORD> FX_SAFE_DWORD;
+typedef base::CheckedNumeric<FX_INT32> FX_SAFE_INT32;
+typedef base::CheckedNumeric<size_t> FX_SAFE_SIZE_T;
+typedef base::CheckedNumeric<FX_FILESIZE> FX_SAFE_FILESIZE;
+
+#endif  // FX_SAFE_TYPES_H_
index fba5d65..b751091 100644 (file)
@@ -10,6 +10,7 @@
 #include "../include/fsdk_rendercontext.h"
 #include "../include/fpdf_progressive.h"
 #include "../include/fpdf_ext.h"
+#include "../../../core/src/fxcrt/fx_safe_types.h"
 #include "../../third_party/numerics/safe_conversions_impl.h"
 
 CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess)
index bbac382..1cbbf9a 100644 (file)
@@ -12,6 +12,7 @@
 #include "../../include/pdfwindow/PWL_Utils.h"
 #include "../../include/pdfwindow/PWL_Caret.h"
 #include "../../include/pdfwindow/PWL_FontMap.h"
+#include "../../../core/src/fxcrt/fx_safe_types.h"
 
 /* ---------------------------- CPWL_Edit ------------------------------ */
 
index a09caa1..df85452 100644 (file)
         'core/include/fxcrt/fx_ucd.h',
         'core/include/fxcrt/fx_xml.h',
         'core/src/fxcrt/extension.h',
+        'core/src/fxcrt/fx_safe_types.h',
         'core/src/fxcrt/fxcrt_platforms.cpp',
         'core/src/fxcrt/fxcrt_platforms.h',
         'core/src/fxcrt/fxcrt_posix.cpp',