]> granicus.if.org Git - icu/commitdiff
ICU-8629 fix unsafe memcpy of UnicodeStrings.
authorAndy Heninger <andy.heninger@gmail.com>
Wed, 29 Jun 2011 23:25:35 +0000 (23:25 +0000)
committerAndy Heninger <andy.heninger@gmail.com>
Wed, 29 Jun 2011 23:25:35 +0000 (23:25 +0000)
X-SVN-Rev: 30254

icu4c/source/i18n/colldata.cpp

index 69ea3043cd9e603bfe7309237e9f315f79b0348c..6d73aeacc406573f77775f4c07619937975961b6 100644 (file)
@@ -234,10 +234,14 @@ void StringList::add(const UnicodeString *string, UErrorCode &status)
 
     if (listSize >= listMax) {
         int32_t newMax = listMax + STRING_LIST_BUFFER_SIZE;
-
         UnicodeString *newStrings = new UnicodeString[newMax];
-
-        uprv_memcpy(newStrings, strings, listSize * sizeof(UnicodeString));
+        if (newStrings == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+        for (int32_t i=0; i<listSize; ++i) {
+            newStrings[i] = strings[i];
+        }
 
 #ifdef INSTRUMENT_STRING_LIST
         int32_t _h = listSize / STRING_LIST_BUFFER_SIZE;