mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix hash key length in umsg_parse_format()
Fix array length passed to zend_hash_str_find_ptr() casting from UChar array to char array requires mul by sizeof(UChar).
This commit is contained in:
parent
ed099ab186
commit
d2331cc3f2
1 changed files with 3 additions and 3 deletions
|
@ -185,10 +185,10 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
|||
|
||||
if (name_part.getType() == UMSGPAT_PART_TYPE_ARG_NAME) {
|
||||
UnicodeString argName = mp.getSubstring(name_part);
|
||||
if ((storedType = (Formattable::Type*)zend_hash_str_find_ptr(ret, (char*)argName.getBuffer(), argName.length())) == NULL) {
|
||||
if ((storedType = (Formattable::Type*)zend_hash_str_find_ptr(ret, (char*)argName.getBuffer(), argName.length() * sizeof(UChar))) == NULL) {
|
||||
/* not found already; create new entry in HT */
|
||||
Formattable::Type bogusType = Formattable::kObject;
|
||||
if ((storedType = (Formattable::Type*)zend_hash_str_update_mem(ret, (char*)argName.getBuffer(), argName.length(),
|
||||
if ((storedType = (Formattable::Type*)zend_hash_str_update_mem(ret, (char*)argName.getBuffer(), argName.length() * sizeof(UChar),
|
||||
(void*)&bogusType, sizeof(bogusType))) == NULL) {
|
||||
intl_errors_set(&err, U_MEMORY_ALLOCATION_ERROR,
|
||||
"Write to argument types hash table failed", 0);
|
||||
|
@ -450,7 +450,7 @@ U_CFUNC void umsg_format_helper(MessageFormatter_object *mfo,
|
|||
continue;
|
||||
}
|
||||
|
||||
storedArgType = (Formattable::Type*)zend_hash_str_find_ptr(types, (char*)key.getBuffer(), key.length());
|
||||
storedArgType = (Formattable::Type*)zend_hash_str_find_ptr(types, (char*)key.getBuffer(), key.length() * sizeof(UChar));
|
||||
}
|
||||
|
||||
if (storedArgType != NULL) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue