Skip to content

Commit df2a329

Browse files
committed
Fix PHPDBG compilation (phpdbg_parse_variable may modify the content of input)
1 parent 92bc94e commit df2a329

File tree

3 files changed

+7
-13
lines changed

3 files changed

+7
-13
lines changed

sapi/phpdbg/phpdbg_cmd.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -770,17 +770,11 @@ PHPDBG_API char *phpdbg_read_input(const char *buffered) /* {{{ */
770770
add_history(cmd);
771771
}
772772
#endif
773-
} else {
774-
cmd = buffered;
775-
}
776-
777-
buffer = estrdup(cmd);
778-
779-
#ifdef HAVE_PHPDBG_READLINE
780-
if (!buffered && cmd && !(PHPDBG_G(flags) & PHPDBG_IS_REMOTE) && isatty(PHPDBG_G(io)[PHPDBG_STDIN].fd)) {
773+
buffer = estrdup(cmd);
781774
free(cmd);
775+
} else {
776+
buffer = estrdup(buffered);
782777
}
783-
#endif
784778
}
785779

786780
if (buffer && isspace(*buffer)) {

sapi/phpdbg/phpdbg_utils.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,11 @@ static int phpdbg_parse_variable_arg_wrapper(char *name, size_t len, char *keyna
424424
return callback(name, len, keyname, keylen, parent, zv);
425425
}
426426

427-
PHPDBG_API int phpdbg_parse_variable(const char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_func callback, zend_bool silent) {
427+
PHPDBG_API int phpdbg_parse_variable(char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_func callback, zend_bool silent) {
428428
return phpdbg_parse_variable_with_arg(input, len, parent, i, (phpdbg_parse_var_with_arg_func) phpdbg_parse_variable_arg_wrapper, NULL, silent, callback);
429429
}
430430

431-
PHPDBG_API int phpdbg_parse_variable_with_arg(const char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_with_arg_func callback, phpdbg_parse_var_with_arg_func step_cb, zend_bool silent, void *arg) {
431+
PHPDBG_API int phpdbg_parse_variable_with_arg(char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_with_arg_func callback, phpdbg_parse_var_with_arg_func step_cb, zend_bool silent, void *arg) {
432432
int ret = FAILURE;
433433
zend_bool new_index = 1;
434434
char *last_index = NULL;

sapi/phpdbg/phpdbg_utils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ char *phpdbg_get_property_key(char *key);
8686
typedef int (*phpdbg_parse_var_func)(char *name, size_t len, char *keyname, size_t keylen, HashTable *parent, zval *zv);
8787
typedef int (*phpdbg_parse_var_with_arg_func)(char *name, size_t len, char *keyname, size_t keylen, HashTable *parent, zval *zv, void *arg);
8888

89-
PHPDBG_API int phpdbg_parse_variable(const char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_func callback, zend_bool silent);
90-
PHPDBG_API int phpdbg_parse_variable_with_arg(const char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_with_arg_func callback, phpdbg_parse_var_with_arg_func step_cb, zend_bool silent, void *arg);
89+
PHPDBG_API int phpdbg_parse_variable(char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_func callback, zend_bool silent);
90+
PHPDBG_API int phpdbg_parse_variable_with_arg(char *input, size_t len, HashTable *parent, size_t i, phpdbg_parse_var_with_arg_func callback, phpdbg_parse_var_with_arg_func step_cb, zend_bool silent, void *arg);
9191

9292
int phpdbg_is_auto_global(char *name, int len);
9393

0 commit comments

Comments
 (0)