Skip to content

Commit aef0110

Browse files
committed
Fxied segfault
1 parent 492b6b7 commit aef0110

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

msgpack_pack.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,17 @@ static inline int msgpack_var_add(HashTable *var_hash, zval *var, zval **var_old
6363
p = zend_print_long_to_buf(id + sizeof(id) - 1, (long)(var_noref));
6464
len = id + sizeof(id) - 1 - p;
6565
} else {
66+
// TODO: uninitialized var_old?
6667
return 0;
6768
}
6869

69-
if (var_old && (*var_old = zend_hash_str_find(var_hash, p, len)) != NULL) {
70+
if (var_old && ((*var_old = zend_hash_str_find(var_hash, p, len))) != NULL) {
7071
if (!Z_ISREF_P(var)) {
72+
size_t offset = (char *)*var_old - (char*)var_hash->arData;
7173
ZVAL_LONG(&zv, -1);
7274
zend_hash_next_index_insert(var_hash, &zv);
75+
/* table maybe resized */
76+
*var_old = (zval *)((char *)var_hash->arData + offset);
7377
}
7478
return 0;
7579
}

0 commit comments

Comments
 (0)