summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/http.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/standard/http.c b/ext/standard/http.c
index 8991cd1075..b949fd3dc7 100644
--- a/ext/standard/http.c
+++ b/ext/standard/http.c
@@ -39,6 +39,11 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
return FAILURE;
}
+ if (ht->nApplyCount > 0) {
+ /* Prevent Recuriosn */
+ return SUCCESS;
+ }
+
arg_sep = INI_STR("arg_separator.output");
if (!arg_sep || !strlen(arg_sep)) {
arg_sep = URL_DEFAULT_ARG_SEP;
@@ -106,7 +111,9 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
*(p++) = '[';
*p = '\0';
}
+ ht->nApplyCount++;
php_url_encode_hash_ex(Z_ARRVAL_PP(zdata), formstr, NULL, 0, newprefix, newprefix_len, "]", 1 TSRMLS_CC);
+ ht->nApplyCount--;
efree(newprefix);
} else {
if (formstr->len) {