Skip to content

Commit 9b5e357

Browse files
committed
Fixed quadratic memory use in array append for PHP and Ruby.
1 parent fd8aabf commit 9b5e357

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

php/ext/google/protobuf/php-upb.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7047,10 +7047,9 @@ void upb_array_set(upb_array *arr, size_t i, upb_msgval val) {
70477047
}
70487048

70497049
bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena) {
7050-
if (!_upb_array_realloc(arr, arr->len + 1, arena)) {
7050+
if (!upb_array_resize(arr, arr->len + 1, arena)) {
70517051
return false;
70527052
}
7053-
arr->len++;
70547053
upb_array_set(arr, arr->len - 1, val);
70557054
return true;
70567055
}

ruby/ext/google/protobuf_c/ruby-upb.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6663,10 +6663,9 @@ void upb_array_set(upb_array *arr, size_t i, upb_msgval val) {
66636663
}
66646664

66656665
bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena) {
6666-
if (!_upb_array_realloc(arr, arr->len + 1, arena)) {
6666+
if (!upb_array_resize(arr, arr->len + 1, arena)) {
66676667
return false;
66686668
}
6669-
arr->len++;
66706669
upb_array_set(arr, arr->len - 1, val);
66716670
return true;
66726671
}

0 commit comments

Comments
 (0)