summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorSterling Hughes <sterling@php.net>2001-11-20 11:29:54 +0000
committerSterling Hughes <sterling@php.net>2001-11-20 11:29:54 +0000
commite7aa85c0117e3cbeba8e21ba31a849ecc6b2c4ae (patch)
tree93e7d02d901f436e963195a5a4390b3f6c355e23 /ext
parent9a17664431c4c1ab76f1cf40916a8c543e38b99e (diff)
downloadphp-git-e7aa85c0117e3cbeba8e21ba31a849ecc6b2c4ae.tar.gz
Fix a crash bug in CURLOPT_POSTFIELDS by using curl_formadd instead of
curl_formparse Fix a crash bug when CURLOPT_INFILE is not properly specified.
Diffstat (limited to 'ext')
-rw-r--r--ext/curl/curl.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/ext/curl/curl.c b/ext/curl/curl.c
index 43dfebd5b8..26bdd73a3b 100644
--- a/ext/curl/curl.c
+++ b/ext/curl/curl.c
@@ -706,8 +706,11 @@ PHP_FUNCTION(curl_setopt)
case CURLOPT_INFILE:
case CURLOPT_WRITEHEADER:
case CURLOPT_STDERR: {
- FILE *fp;
+ FILE *fp = NULL;
ZEND_FETCH_RESOURCE(fp, FILE *, zvalue, -1, "File-Handle", php_file_le_fopen());
+ if (!fp) {
+ RETURN_FALSE;
+ }
error = CURLE_OK;
switch (option) {
@@ -789,11 +792,8 @@ PHP_FUNCTION(curl_setopt)
zend_hash_get_current_key_ex(postfields, &string_key, &string_key_len, &num_key, 0, NULL);
- postval = emalloc((string_key_len - 1) + Z_STRLEN_PP(current) + 1);
- snprintf(postval, (sizeof("%s=%s") - 1) + (string_key_len - 1) + Z_STRLEN_PP(current),
- "%s=%s", string_key, Z_STRVAL_PP(current));
-
- error = curl_formparse(postval, &first, &last);
+ error = curl_formadd(&first, &last, CURLFORM_COPYNAME, string_key,
+ CURLFORM_PTRCONTENTS, Z_STRVAL_PP(current), CURLFORM_END);
}
if (error != CURLE_OK) {