diff options
| -rw-r--r-- | meta/recipes-support/icu/icu/ICU-22813_rise_buffer_sizes_pkgdata_PR3058.patch | 72 | ||||
| -rw-r--r-- | meta/recipes-support/icu/icu_75-1.bb | 1 |
2 files changed, 73 insertions, 0 deletions
diff --git a/meta/recipes-support/icu/icu/ICU-22813_rise_buffer_sizes_pkgdata_PR3058.patch b/meta/recipes-support/icu/icu/ICU-22813_rise_buffer_sizes_pkgdata_PR3058.patch new file mode 100644 index 0000000000..5b97350e6f --- /dev/null +++ b/meta/recipes-support/icu/icu/ICU-22813_rise_buffer_sizes_pkgdata_PR3058.patch | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | From db70adaddcfa8050db6a69cdfef080a7f1423ad7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Carlos Alberto Lopez Perez <clopez@igalia.com> | ||
| 3 | Date: Mon, 1 Jul 2024 22:15:18 +0100 | ||
| 4 | Subject: [PATCH] ICU-22813 Rise the size of the buffers used for the command | ||
| 5 | strings at pkgdata | ||
| 6 | |||
| 7 | The tool pkgdata uses snprintf() to build the strings of the commands that | ||
| 8 | will execute later during the install process. But the maximum size of this | ||
| 9 | buffers is not enough when there is a long path. | ||
| 10 | |||
| 11 | This has caused issues on some CI systems that use very long paths, causing | ||
| 12 | the install process to produce a wrong result. | ||
| 13 | |||
| 14 | The maximum path on Linux is 4096 (defined as PATH_MAX at <linux/limits.h>) | ||
| 15 | So the size of SMALL_BUFFER_MAX_SIZE should be 4096 to avoid errors related | ||
| 16 | to truncated paths. | ||
| 17 | |||
| 18 | Upstream-Status: Backport [https://github.com/unicode-org/icu/pull/3058] | ||
| 19 | |||
| 20 | Signed-off-by: Carlos Alberto Lopez Perez <clopez@igalia.com> | ||
| 21 | --- | ||
| 22 | tools/pkgdata/pkgdata.cpp | 6 +++--- | ||
| 23 | tools/toolutil/pkg_genc.h | 5 ++--- | ||
| 24 | 2 files changed, 5 insertions(+), 6 deletions(-) | ||
| 25 | |||
| 26 | diff --git a/tools/pkgdata/pkgdata.cpp b/tools/pkgdata/pkgdata.cpp | ||
| 27 | index c2ac112..8d08c85 100644 | ||
| 28 | --- a/tools/pkgdata/pkgdata.cpp | ||
| 29 | +++ b/tools/pkgdata/pkgdata.cpp | ||
| 30 | @@ -1134,7 +1134,7 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling) | ||
| 31 | |||
| 32 | static int32_t pkg_installLibrary(const char *installDir, const char *targetDir, UBool noVersion) { | ||
| 33 | int32_t result = 0; | ||
| 34 | - char cmd[SMALL_BUFFER_MAX_SIZE]; | ||
| 35 | + char cmd[LARGE_BUFFER_MAX_SIZE]; | ||
| 36 | |||
| 37 | auto ret = snprintf(cmd, | ||
| 38 | sizeof(cmd), | ||
| 39 | @@ -1205,7 +1205,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir, | ||
| 40 | |||
| 41 | static int32_t pkg_installCommonMode(const char *installDir, const char *fileName) { | ||
| 42 | int32_t result = 0; | ||
| 43 | - char cmd[SMALL_BUFFER_MAX_SIZE] = ""; | ||
| 44 | + char cmd[LARGE_BUFFER_MAX_SIZE] = ""; | ||
| 45 | |||
| 46 | if (!T_FileStream_file_exists(installDir)) { | ||
| 47 | UErrorCode status = U_ZERO_ERROR; | ||
| 48 | @@ -1237,7 +1237,7 @@ static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam | ||
| 49 | #endif | ||
| 50 | static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, const char *fileListName) { | ||
| 51 | int32_t result = 0; | ||
| 52 | - char cmd[SMALL_BUFFER_MAX_SIZE] = ""; | ||
| 53 | + char cmd[LARGE_BUFFER_MAX_SIZE] = ""; | ||
| 54 | |||
| 55 | if (!T_FileStream_file_exists(installDir)) { | ||
| 56 | UErrorCode status = U_ZERO_ERROR; | ||
| 57 | diff --git a/tools/toolutil/pkg_genc.h b/tools/toolutil/pkg_genc.h | ||
| 58 | index 2dd1b45..f811fe5 100644 | ||
| 59 | --- a/tools/toolutil/pkg_genc.h | ||
| 60 | +++ b/tools/toolutil/pkg_genc.h | ||
| 61 | @@ -59,9 +59,8 @@ | ||
| 62 | #define PKGDATA_FILE_SEP_STRING U_FILE_SEP_STRING | ||
| 63 | #endif | ||
| 64 | |||
| 65 | -#define LARGE_BUFFER_MAX_SIZE 2048 | ||
| 66 | -#define SMALL_BUFFER_MAX_SIZE 512 | ||
| 67 | -#define SMALL_BUFFER_FLAG_NAMES 32 | ||
| 68 | +#define LARGE_BUFFER_MAX_SIZE 16384 | ||
| 69 | +#define SMALL_BUFFER_MAX_SIZE 4096 | ||
| 70 | #define BUFFER_PADDING_SIZE 20 | ||
| 71 | |||
| 72 | /** End platform defines **/ | ||
diff --git a/meta/recipes-support/icu/icu_75-1.bb b/meta/recipes-support/icu/icu_75-1.bb index 88103e4eca..8f7f5e6cc7 100644 --- a/meta/recipes-support/icu/icu_75-1.bb +++ b/meta/recipes-support/icu/icu_75-1.bb | |||
| @@ -120,6 +120,7 @@ SRC_URI = "${BASE_SRC_URI};name=code \ | |||
| 120 | file://filter.json \ | 120 | file://filter.json \ |
| 121 | file://fix-install-manx.patch \ | 121 | file://fix-install-manx.patch \ |
| 122 | file://0001-icu-Added-armeb-support.patch \ | 122 | file://0001-icu-Added-armeb-support.patch \ |
| 123 | file://ICU-22813_rise_buffer_sizes_pkgdata_PR3058.patch \ | ||
| 123 | " | 124 | " |
| 124 | 125 | ||
| 125 | SRC_URI:append:class-target = "\ | 126 | SRC_URI:append:class-target = "\ |
