diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2004-10-18 22:41:24 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2004-10-18 22:41:24 +0000 |
| commit | 8c8fba0841bfb40182d5d17e1447a4da1f389231 (patch) | |
| tree | 616a17b46339ae6d183ee40e6a781cff9c15053d /ext/curl/interface.c | |
| parent | e865bc2bc55dd5846aede8cdd9d5c2b309ee9e65 (diff) | |
| download | php-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.c | 27 |
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; } } |
