summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-10-28 14:33:46 +0100
committerStephan Bergmann <sbergman@redhat.com>2014-10-28 14:33:46 +0100
commit3025a28bc2e89af05c9d287a07223be0447d3c2f (patch)
tree74e387b4848eabc48919398b386df94b87b874b8 /external
parent1b1c11f51914448d1ebc0fe18abf2b325f8c4791 (diff)
external/icu: More workaround UBSan flexible array member detection
Change-Id: Ie83e3104bd639be42ac0c6e25fc2eafd88cf0c6f
Diffstat (limited to 'external')
-rw-r--r--external/icu/icu-ubsan.patch.017
1 files changed, 16 insertions, 1 deletions
diff --git a/external/icu/icu-ubsan.patch.0 b/external/icu/icu-ubsan.patch.0
index 5f9e85f502eb..7268bb7ab06b 100644
--- a/external/icu/icu-ubsan.patch.0
+++ b/external/icu/icu-ubsan.patch.0
@@ -9,9 +9,24 @@
/* This array does not have two elements */
/* Array Size is actually fData->fHeader->fCatCount */
/* CAUTION: see RBBITableBuilder::getTableSize() */
+@@ -126,7 +126,7 @@
+ uint32_t fRowLen; /* Length of a state table row, in bytes. */
+ uint32_t fFlags; /* Option Flags for this state table */
+ uint32_t fReserved; /* reserved */
+- char fTableData[4]; /* First RBBIStateTableRow begins here. */
++ char fTableData[1]; /* First RBBIStateTableRow begins here. */
+ /* (making it char[] simplifies ugly address */
+ /* arithmetic for indexing variable length rows.) */
+ };
--- source/common/rbbitblb.cpp
+++ source/common/rbbitblb.cpp
-@@ -1072,10 +1072,10 @@
+@@ -1067,15 +1067,15 @@
+ return 0;
+ }
+
+- size = sizeof(RBBIStateTable) - 4; // The header, with no rows to the table.
++ size = offsetof(RBBIStateTable, fTableData); // The header, with no rows to the table.
+
numRows = fDStates->size();
numCols = fRB->fSetBuilder->getNumCharCategories();