diff options
author | Sara Golemon <pollita@php.net> | 2003-09-06 07:34:58 +0000 |
---|---|---|
committer | Sara Golemon <pollita@php.net> | 2003-09-06 07:34:58 +0000 |
commit | c0469ceb8d36c94533f43dbc5fd9cdb42d6e3eab (patch) | |
tree | 6b5166c9c7bc48ab736dce40ca48f89b326b2201 | |
parent | 490e7fd6fd6ec7b6094d2441692c31af6c00ca50 (diff) | |
download | php-git-c0469ceb8d36c94533f43dbc5fd9cdb42d6e3eab.tar.gz |
Fix Objects bug. (Objects != Arrays)
-rw-r--r-- | ext/standard/http.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/standard/http.c b/ext/standard/http.c index 892f02b99d..2d9fecad9d 100644 --- a/ext/standard/http.c +++ b/ext/standard/http.c @@ -58,7 +58,7 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr, key_len -= 1; } - if (zend_hash_get_current_data_ex(ht, (void **)&zdata, NULL) == FAILURE || !zdata) { + if (zend_hash_get_current_data_ex(ht, (void **)&zdata, NULL) == FAILURE || !zdata || !(*zdata)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error traversing form data array."); return FAILURE; } @@ -112,7 +112,7 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr, *p = '\0'; } ht->nApplyCount++; - php_url_encode_hash_ex(Z_ARRVAL_PP(zdata), formstr, NULL, 0, newprefix, newprefix_len, "]", 1 TSRMLS_CC); + php_url_encode_hash_ex(HASH_OF(*zdata), formstr, NULL, 0, newprefix, newprefix_len, "]", 1 TSRMLS_CC); ht->nApplyCount--; efree(newprefix); } else if (Z_TYPE_PP(zdata) == IS_NULL || Z_TYPE_PP(zdata) == IS_RESOURCE) { @@ -175,7 +175,12 @@ PHP_FUNCTION(http_build_query) int prefix_len = 0; smart_str formstr = {0}; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|s", &formdata, &prefix, &prefix_len) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|s", &formdata, &prefix, &prefix_len) != SUCCESS) { + RETURN_FALSE; + } + + if (Z_TYPE_P(formdata) != IS_ARRAY && Z_TYPE_P(formdata) != IS_OBJECT) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Parameter 1 expected to be Array or Object. Incorrect value given."); RETURN_FALSE; } |