diff --git a/static-build/cmake/AddDependencyProjects.cmake b/static-build/cmake/AddDependencyProjects.cmake index d52dae7a3534b53d44744a14eeae74d7099345f8..a5f38fa227096b7afb5d73184bf27bdd0df66dfd 100644 --- a/static-build/cmake/AddDependencyProjects.cmake +++ b/static-build/cmake/AddDependencyProjects.cmake @@ -115,6 +115,7 @@ ExternalProject_Add(icu cat <BINARY_DIR>/uconfig.h.prepend <INSTALL_DIR>/include/unicode/uconfig.h >> <BINARY_DIR>/uconfig.h && ${CMAKE_COMMAND} -E copy_if_different <BINARY_DIR>/uconfig.h <INSTALL_DIR>/include/unicode/uconfig.h PATCH_COMMAND patch -d <SOURCE_DIR> -p1 -i "${PATCHES_DIR}/icu-tarantool-security-45.patch" + COMMAND patch -d <SOURCE_DIR> -p1 -i "${PATCHES_DIR}/icu-tarantool-security-59.patch" ) set(TARANTOOL_DEPENDS icu ${TARANTOOL_DEPENDS}) diff --git a/static-build/patches/icu-tarantool-security-59.patch b/static-build/patches/icu-tarantool-security-59.patch new file mode 100644 index 0000000000000000000000000000000000000000..f41ec006adb0847931e92c5a274cff459a897e7c --- /dev/null +++ b/static-build/patches/icu-tarantool-security-59.patch @@ -0,0 +1,21 @@ +diff --git a/source/common/utrie2.cpp b/source/common/utrie2.cpp +index 24ef578..359952a 100644 +--- a/source/common/utrie2.cpp ++++ b/source/common/utrie2.cpp +@@ -574,7 +574,15 @@ enumEitherTrie(const UTrie2 *trie, + c+=UTRIE2_DATA_BLOCK_LENGTH; + } else { + for(j=0; j<UTRIE2_DATA_BLOCK_LENGTH; ++j) { +- value=enumValue(context, data32!=NULL ? data32[block+j] : idx[block+j]); ++ if (data32!=NULL) { ++ value=enumValue(context, data32[block+j]); ++ } else if (idx!=NULL) { ++ value=enumValue(context, idx[block+j]); ++ } else { ++ /* data32 and idx are not supposed to be NULL at the same time */ ++ U_ASSERT(false); ++ return; ++ } + if(value!=prevValue) { + if(prev<c && !enumRange(context, prev, c-1, prevValue)) { + return;