summaryrefslogtreecommitdiff
path: root/ext/curl/interface.c
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2004-10-18 22:41:24 +0000
committerIlia Alshanetsky <iliaa@php.net>2004-10-18 22:41:24 +0000
commit8c8fba0841bfb40182d5d17e1447a4da1f389231 (patch)
tree616a17b46339ae6d183ee40e6a781cff9c15053d /ext/curl/interface.c
parente865bc2bc55dd5846aede8cdd9d5c2b309ee9e65 (diff)
downloadphp-git-8c8fba0841bfb40182d5d17e1447a4da1f389231.tar.gz
Fixed bug #30475 (curl_getinfo() may crash in some situations).
Diffstat (limited to 'ext/curl/interface.c')
-rw-r--r--ext/curl/interface.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index 46021ef4b9..b11dd2b075 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -1336,10 +1336,13 @@ PHP_FUNCTION(curl_getinfo)
switch (option) {
case CURLINFO_EFFECTIVE_URL:
case CURLINFO_CONTENT_TYPE: {
- char *s_code;
+ char *s_code = NULL;
- curl_easy_getinfo(ch->cp, option, &s_code);
- RETURN_STRING(s_code, 1);
+ if (curl_easy_getinfo(ch->cp, option, &s_code) == CURLE_OK && s_code) {
+ RETURN_STRING(s_code, 1);
+ } else {
+ RETURN_FALSE;
+ }
break;
}
case CURLINFO_HTTP_CODE:
@@ -1348,10 +1351,13 @@ PHP_FUNCTION(curl_getinfo)
case CURLINFO_FILETIME:
case CURLINFO_SSL_VERIFYRESULT:
case CURLINFO_REDIRECT_COUNT: {
- long code;
+ long code = 0;
- curl_easy_getinfo(ch->cp, option, &code);
- RETURN_LONG(code);
+ if (curl_easy_getinfo(ch->cp, option, &code) == CURLE_OK) {
+ RETURN_LONG(code);
+ } else {
+ RETURN_FALSE;
+ }
break;
}
case CURLINFO_TOTAL_TIME:
@@ -1366,10 +1372,13 @@ PHP_FUNCTION(curl_getinfo)
case CURLINFO_CONTENT_LENGTH_UPLOAD:
case CURLINFO_STARTTRANSFER_TIME:
case CURLINFO_REDIRECT_TIME: {
- double code;
+ double code = 0.0;
- curl_easy_getinfo(ch->cp, option, &code);
- RETURN_DOUBLE(code);
+ if (curl_easy_getinfo(ch->cp, option, &code) == CURLE_OK) {
+ RETURN_DOUBLE(code);
+ } else {
+ RETURN_FALSE;
+ }
break;
}
}