[Libreoffice-commits] core.git: external/icu

Caolán McNamara caolanm at redhat.com
Sat Aug 9 13:16:14 PDT 2014


 external/icu/UnpackedTarball_icu.mk |    1 
 external/icu/icu4c-icu11054.patch.1 |   44 ++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

New commits:
commit d79d2f0ef7a0e300a3ee4be128c625121d0c4b26
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Aug 9 21:14:03 2014 +0100

    Resolves: icu#11054 crashes in bracketAddOpening
    
    Change-Id: I5dd63fa41c1568e8bf2d120cc0de5d2c44dd789c

diff --git a/external/icu/UnpackedTarball_icu.mk b/external/icu/UnpackedTarball_icu.mk
index 3b06d22..07dcab8 100644
--- a/external/icu/UnpackedTarball_icu.mk
+++ b/external/icu/UnpackedTarball_icu.mk
@@ -22,6 +22,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
 	external/icu/icu4c-buffer-overflow.patch \
 	external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \
 	external/icu/icu-ubsan.patch.0 \
+	external/icu/icu4c-icu11054.patch.1 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/icu/icu4c-icu11054.patch.1 b/external/icu/icu4c-icu11054.patch.1
new file mode 100644
index 0000000..48d21f5
--- /dev/null
+++ b/external/icu/icu4c-icu11054.patch.1
@@ -0,0 +1,44 @@
+--- icu/source/common/ubidi.c.orig	2014-08-09 20:54:39.338833533 +0100
++++ icu/source/common/ubidi.c	2014-08-09 20:55:48.625469055 +0100
+@@ -679,10 +679,10 @@
+     bd->isoRuns[0].contextPos=0;
+     if(pBiDi->openingsMemory) {
+         bd->openings=pBiDi->openingsMemory;
+-        bd->openingsSize=pBiDi->openingsSize;
++        bd->openingsCount=pBiDi->openingsSize / sizeof(Opening);
+     } else {
+         bd->openings=bd->simpleOpenings;
+-        bd->openingsSize=SIMPLE_OPENINGS_SIZE;
++        bd->openingsCount=SIMPLE_OPENINGS_SIZE;
+     }
+     bd->isNumbersSpecial=bd->pBiDi->reorderingMode==UBIDI_REORDER_NUMBERS_SPECIAL ||
+                          bd->pBiDi->reorderingMode==UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL;
+@@ -743,7 +743,7 @@
+ bracketAddOpening(BracketData *bd, UChar match, int32_t position) {
+     IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
+     Opening *pOpening;
+-    if(pLastIsoRun->limit>=bd->openingsSize) {  /* no available new entry */
++    if(pLastIsoRun->limit>=bd->openingsCount) {  /* no available new entry */
+         UBiDi *pBiDi=bd->pBiDi;
+         if(!getInitialOpeningsMemory(pBiDi, pLastIsoRun->limit * 2))
+             return FALSE;
+@@ -751,7 +751,7 @@
+             uprv_memcpy(pBiDi->openingsMemory, bd->simpleOpenings,
+                         SIMPLE_OPENINGS_SIZE * sizeof(Opening));
+         bd->openings=pBiDi->openingsMemory;     /* may have changed */
+-        bd->openingsSize=pBiDi->openingsSize;
++        bd->openingsCount=pBiDi->openingsSize / sizeof(Opening);
+     }
+     pOpening=&bd->openings[pLastIsoRun->limit];
+     pOpening->position=position;
+--- icu/source/common/ubidiimp.h.orig	2014-08-09 20:55:15.053161192 +0100
++++ icu/source/common/ubidiimp.h	2014-08-09 20:56:07.028637725 +0100
+@@ -173,7 +173,7 @@
+     /* array of opening entries which should be enough in most cases; no malloc() */
+     Opening simpleOpenings[SIMPLE_OPENINGS_SIZE];
+     Opening *openings;                  /* pointer to current array of entries */
+-    int32_t openingsSize;               /* number of allocated entries */
++    int32_t openingsCount;               /* number of allocated entries */
+     int32_t isoRunLast;                 /* index of last used entry */
+     /* array of nested isolated sequence entries; can never excess UBIDI_MAX_EXPLICIT_LEVEL
+        + 1 for index 0, + 1 for before the first isolated sequence */


More information about the Libreoffice-commits mailing list