From 709570acfb667b2884d24e9a90061466809ceeef Mon Sep 17 00:00:00 2001 From: Daniel Andersson Date: Thu, 18 Jun 2020 20:49:57 -0700 Subject: [PATCH] Add sanity checks to JSBigFileString Summary: When asking for the data of a JSBigFileString, check that the instance satisfies some basic invariants. This is meant to catch any corruption issues as early as possible. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D22125436 fbshipit-source-id: e0a84752c86151d56b7e7cbed3b95650d8ba1f75 --- ReactCommon/cxxreact/JSBigString.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ReactCommon/cxxreact/JSBigString.cpp b/ReactCommon/cxxreact/JSBigString.cpp index 834a7ca6900..77e22800fd8 100644 --- a/ReactCommon/cxxreact/JSBigString.cpp +++ b/ReactCommon/cxxreact/JSBigString.cpp @@ -126,6 +126,13 @@ const char *JSBigFileString::c_str() const { } #endif // WITH_FBREMAP } + static const size_t kMinPageSize = 4096; + CHECK(!(reinterpret_cast(m_data) & (kMinPageSize - 1))) + << "mmap address misaligned, likely corrupted" + << " m_data: " << (const void *)m_data; + CHECK(m_pageOff <= m_size) + << "offset impossibly large, likely corrupted" + << " m_pageOff: " << m_pageOff << " m_size: " << m_size; return m_data + m_pageOff; }