From: Frank Tang Date: Fri, 15 Apr 2022 18:47:25 +0000 (-0700) Subject: ICU-21994 Fix heap-buffer-overflow X-Git-Tag: cldr/2022-05-28~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fca6b342c03d89998eba227d284e232dabbfab47;p=icu ICU-21994 Fix heap-buffer-overflow --- diff --git a/icu4c/source/common/locid.cpp b/icu4c/source/common/locid.cpp index 73bb8d8aec1..96d3851804d 100644 --- a/icu4c/source/common/locid.cpp +++ b/icu4c/source/common/locid.cpp @@ -716,20 +716,19 @@ AliasDataBuilder::readAlias( status = U_MEMORY_ALLOCATION_ERROR; return; } - int i = 0; - while (ures_hasNext(alias)) { + for (int i = 0; U_SUCCESS(status) && ures_hasNext(alias); i++) { LocalUResourceBundlePointer res( ures_getNextResource(alias, nullptr, &status)); const char* aliasFrom = ures_getKey(res.getAlias()); UnicodeString aliasTo = ures_getUnicodeStringByKey(res.getAlias(), "replacement", &status); + if (U_FAILURE(status)) return; checkType(aliasFrom); checkReplacement(aliasTo); rawTypes[i] = aliasFrom; rawIndexes[i] = strings->add(aliasTo, status); - i++; } }