diff options
author | hans <hans@chromium.org> | 2016-05-16 12:25:44 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-16 12:25:44 -0700 |
commit | 06f457216f45093dc5dff12055733aa426c26c59 (patch) | |
tree | 177397bc0f0502663ddae64afe008540b39360a2 /core/fxcrt | |
parent | 3f80c864d5318d4d80ac811d42c92d8f63e0b5ac (diff) | |
download | pdfium-06f457216f45093dc5dff12055733aa426c26c59.tar.xz |
Fix binding of null pointer dereference to reference typechromium/2740chromium/2739
A new Clang warning complains about this, and especially for the function
returning a reference, it seems like a bad idea.
BUG=none
Review-Url: https://codereview.chromium.org/1986453002
Diffstat (limited to 'core/fxcrt')
-rw-r--r-- | core/fxcrt/include/fx_basic.h | 4 | ||||
-rw-r--r-- | core/fxcrt/include/fx_system.h | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h index 7121ffcd0b..59d72b8f5a 100644 --- a/core/fxcrt/include/fx_basic.h +++ b/core/fxcrt/include/fx_basic.h @@ -277,7 +277,7 @@ class CFX_ArrayTemplate : public CFX_BasicArray { const TYPE GetAt(int nIndex) const { if (nIndex < 0 || nIndex >= m_nSize) { - return (const TYPE&)(*(volatile const TYPE*)NULL); + PDFIUM_IMMEDIATE_CRASH(); } return ((const TYPE*)m_pData)[nIndex]; } @@ -292,7 +292,7 @@ class CFX_ArrayTemplate : public CFX_BasicArray { TYPE& ElementAt(int nIndex) { if (nIndex < 0 || nIndex >= m_nSize) { - return *(TYPE*)NULL; + PDFIUM_IMMEDIATE_CRASH(); } return ((TYPE*)m_pData)[nIndex]; } diff --git a/core/fxcrt/include/fx_system.h b/core/fxcrt/include/fx_system.h index 205976fb15..61acd73492 100644 --- a/core/fxcrt/include/fx_system.h +++ b/core/fxcrt/include/fx_system.h @@ -103,6 +103,12 @@ static_assert(FALSE == false, "false_needs_to_be_false"); #endif #endif +#if defined(__clang__) || defined(__GNUC__) +#define PDFIUM_IMMEDIATE_CRASH() __builtin_trap() +#else +#define PDFIUM_IMMEDIATE_CRASH() ((void)(*(volatile char*)0 = 0)) +#endif + // M_PI not universally present on all platforms. #define FX_PI 3.1415926535897932384626433832795f #define FX_BEZIER 0.5522847498308f |