]> code.ossystems Code Review - openembedded-core.git/commitdiff
icu: Use LARGE_BUFFER_MAX_SIZE for cmd
authorJackie Huang <jackie.huang@windriver.com>
Wed, 10 May 2017 06:29:11 +0000 (14:29 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 23 May 2017 16:43:58 +0000 (17:43 +0100)
The previous patch used LARGE_BUFFER_MAX_SIZE instead
of SMALL_BUFFER_MAX_SIZE for cmd in function pkg_installLibrary,
which only fixed some of the cases when the command line
is too long, some other cases indicate that the
LARGE_BUFFER_MAX_SIZE is also needed in pkg_installCommonMode
and pkg_installFileMode to avoid overflow:

| *** buffer overflow detected ***: ../bin/pkgdata terminated

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/recipes-support/icu/icu/icu-pkgdata-large-cmd.patch

index 6e40659227f37a1849647b8116ddfb1375b21661..e758a623ef4c8b3af18c425ec32ec0d0a1260700 100644 (file)
@@ -8,14 +8,16 @@ LARGE_BUFFER_MAX_SIZE.
 Upstream-Status: Pending
 
 Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
 ---
- tools/pkgdata/pkgdata.cpp |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ tools/pkgdata/pkgdata.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/tools/pkgdata/pkgdata.cpp b/tools/pkgdata/pkgdata.cpp
+index 60167dd..506dd32 100644
 --- a/tools/pkgdata/pkgdata.cpp
 +++ b/tools/pkgdata/pkgdata.cpp
-@@ -1019,7 +1019,7 @@ normal_symlink_mode:
+@@ -1084,7 +1084,7 @@ normal_symlink_mode:
  
  static int32_t pkg_installLibrary(const char *installDir, const char *targetDir, UBool noVersion) {
      int32_t result = 0;
@@ -24,6 +26,24 @@ diff --git a/tools/pkgdata/pkgdata.cpp b/tools/pkgdata/pkgdata.cpp
  
      sprintf(cmd, "cd %s && %s %s %s%s%s",
              targetDir,
+@@ -1152,7 +1152,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir,
+ static int32_t pkg_installCommonMode(const char *installDir, const char *fileName) {
+     int32_t result = 0;
+-    char cmd[SMALL_BUFFER_MAX_SIZE] = "";
++    char cmd[LARGE_BUFFER_MAX_SIZE] = "";
+     if (!T_FileStream_file_exists(installDir)) {
+         UErrorCode status = U_ZERO_ERROR;
+@@ -1184,7 +1184,7 @@ static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam
+ #endif
+ static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, const char *fileListName) {
+     int32_t result = 0;
+-    char cmd[SMALL_BUFFER_MAX_SIZE] = "";
++    char cmd[LARGE_BUFFER_MAX_SIZE] = "";
+     if (!T_FileStream_file_exists(installDir)) {
+         UErrorCode status = U_ZERO_ERROR;
 -- 
-1.7.10.4
+1.9.1