true bug in libcurl built with OpenSSL. It made curl_easy_getinfo() more or
  less always return 0 for CURLINFO_SSL_VERIFYRESULT because the function that
  would set it to something non-zero would return before the assign in almost
  all error cases. The internal variable is now set to non-zero from the start
  of the function only to get cleared later on if things work out fine.
This commit is contained in:
Daniel Stenberg 2008-07-30 21:24:59 +00:00
parent 03986f1b8b
commit ae654266df
3 changed files with 35 additions and 21 deletions

10
CHANGES
View File

@ -6,6 +6,16 @@
Changelog Changelog
Daniel Stenberg (30 Jul 2008)
- PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies a
true bug in libcurl built with OpenSSL. It made curl_easy_getinfo() more or
less always return 0 for CURLINFO_SSL_VERIFYRESULT because the function that
would set it to something non-zero would return before the assign in almost
all error cases. The internal variable is now set to non-zero from the start
of the function only to get cleared later on if things work out fine.
- Made the curl tool's -w option support the %{ssl_verify_result} variable
Daniel Fandrich (30 Jul 2008) Daniel Fandrich (30 Jul 2008)
- Added test cases 1052 through 1055 to test uploading data from files - Added test cases 1052 through 1055 to test uploading data from files
during redirects. Test cases 1052 and 1055 show problems (maybe the same during redirects. Test cases 1052 and 1055 show problems (maybe the same

View File

@ -18,6 +18,7 @@ This release includes the following changes:
o Now builds for the INTEGRITY operating system o Now builds for the INTEGRITY operating system
o Added CURLINFO_APPCONNECT_TIME o Added CURLINFO_APPCONNECT_TIME
o Added test selection by key word in runtests.pl o Added test selection by key word in runtests.pl
o the curl tool's -w option support the %{ssl_verify_result} variable
This release includes the following bugfixes: This release includes the following bugfixes:
@ -37,6 +38,7 @@ This release includes the following bugfixes:
o user-agent in CONNECT with non-HTTP protocols o user-agent in CONNECT with non-HTTP protocols
o CURL_READFUNC_PAUSE problems fixed o CURL_READFUNC_PAUSE problems fixed
o --use-ascii now works on Symbian OS, MS-DOS and OS/2 o --use-ascii now works on Symbian OS, MS-DOS and OS/2
o CURLINFO_SSL_VERIFYRESULT is fixed
This release includes the following known bugs: This release includes the following known bugs:

View File

@ -1639,6 +1639,8 @@ static CURLcode servercert(struct connectdata *conn,
X509 *issuer; X509 *issuer;
FILE *fp; FILE *fp;
data->set.ssl.certverifyresult = !X509_V_OK;
connssl->server_cert = SSL_get_peer_certificate(connssl->handle); connssl->server_cert = SSL_get_peer_certificate(connssl->handle);
if(!connssl->server_cert) { if(!connssl->server_cert) {
if(strict) if(strict)
@ -1728,7 +1730,7 @@ static CURLcode servercert(struct connectdata *conn,
if(data->set.ssl.certverifyresult != X509_V_OK) { if(data->set.ssl.certverifyresult != X509_V_OK) {
if(data->set.ssl.verifypeer) { if(data->set.ssl.verifypeer) {
/* We probably never reach this, because SSL_connect() will fail /* We probably never reach this, because SSL_connect() will fail
and we return earlyer if verifypeer is set? */ and we return earlier if verifypeer is set? */
if(strict) if(strict)
failf(data, "SSL certificate verify result: %s (%ld)", failf(data, "SSL certificate verify result: %s (%ld)",
X509_verify_cert_error_string(lerr), lerr); X509_verify_cert_error_string(lerr), lerr);