summaryrefslogtreecommitdiff
path: root/external/icu/icu-ubsan.patch.0
diff options
context:
space:
mode:
Diffstat (limited to 'external/icu/icu-ubsan.patch.0')
-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();