diff options
author | Sterling Hughes <sterling@php.net> | 2001-11-20 11:29:54 +0000 |
---|---|---|
committer | Sterling Hughes <sterling@php.net> | 2001-11-20 11:29:54 +0000 |
commit | e7aa85c0117e3cbeba8e21ba31a849ecc6b2c4ae (patch) | |
tree | 93e7d02d901f436e963195a5a4390b3f6c355e23 /ext | |
parent | 9a17664431c4c1ab76f1cf40916a8c543e38b99e (diff) | |
download | php-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.c | 12 |
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) { |