Skip to content

Commit 8d1099a

Browse files
committed
duplicate value's string for the SAPI filter
reported by sesser; tyrael, do you take care of the bug/NEWS?
1 parent 4bdd9aa commit 8d1099a

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

main/php_variables.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ typedef struct post_var_data {
241241

242242
static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSRMLS_DC)
243243
{
244-
char *ksep, *vsep;
244+
char *ksep, *vsep, *val;
245245
size_t klen, vlen;
246246
/* FIXME: string-size_t */
247247
unsigned int new_vlen;
@@ -272,15 +272,17 @@ static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSR
272272
vlen = 0;
273273
}
274274

275-
276275
php_url_decode(var->ptr, klen);
276+
277+
val = estrndup(ksep, vlen);
277278
if (vlen) {
278-
vlen = php_url_decode(ksep, vlen);
279+
vlen = php_url_decode(val, vlen);
279280
}
280281

281-
if (sapi_module.input_filter(PARSE_POST, var->ptr, &ksep, vlen, &new_vlen TSRMLS_CC)) {
282-
php_register_variable_safe(var->ptr, ksep, new_vlen, arr TSRMLS_CC);
282+
if (sapi_module.input_filter(PARSE_POST, var->ptr, &val, vlen, &new_vlen TSRMLS_CC)) {
283+
php_register_variable_safe(var->ptr, val, new_vlen, arr TSRMLS_CC);
283284
}
285+
efree(val);
284286

285287
var->ptr = vsep + (vsep != var->end);
286288
return 1;

0 commit comments

Comments
 (0)