TLS: switch off SSL session id when client cert is used
CVE-2016-5419 Bug: https://curl.haxx.se/docs/adv_20160803A.html Reported-by: Bru Rom Contributions-by: Eric Rescorla and Ray Satiro
This commit is contained in:
Родитель
75dc096e01
Коммит
247d890da8
|
@ -6123,6 +6123,7 @@ static CURLcode create_conn(struct Curl_easy *data,
|
|||
data->set.ssl.random_file = data->set.str[STRING_SSL_RANDOM_FILE];
|
||||
data->set.ssl.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
|
||||
data->set.ssl.cipher_list = data->set.str[STRING_SSL_CIPHER_LIST];
|
||||
data->set.ssl.clientcert = data->set.str[STRING_CERT];
|
||||
#ifdef USE_TLS_SRP
|
||||
data->set.ssl.username = data->set.str[STRING_TLSAUTH_USERNAME];
|
||||
data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD];
|
||||
|
|
|
@ -351,6 +351,7 @@ struct ssl_config_data {
|
|||
char *CAfile; /* certificate to verify peer against */
|
||||
const char *CRLfile; /* CRL to check certificate revocation */
|
||||
const char *issuercert;/* optional issuer certificate filename */
|
||||
char *clientcert;
|
||||
char *random_file; /* path to file containing "random" data */
|
||||
char *egdsocket; /* path to file containing the EGD daemon socket */
|
||||
char *cipher_list; /* list of ciphers to use */
|
||||
|
|
|
@ -156,6 +156,15 @@ Curl_clone_ssl_config(struct ssl_config_data *source,
|
|||
else
|
||||
dest->random_file = NULL;
|
||||
|
||||
if(source->clientcert) {
|
||||
dest->clientcert = strdup(source->clientcert);
|
||||
if(!dest->clientcert)
|
||||
return FALSE;
|
||||
dest->sessionid = FALSE;
|
||||
}
|
||||
else
|
||||
dest->clientcert = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -166,6 +175,7 @@ void Curl_free_ssl_config(struct ssl_config_data* sslc)
|
|||
Curl_safefree(sslc->cipher_list);
|
||||
Curl_safefree(sslc->egdsocket);
|
||||
Curl_safefree(sslc->random_file);
|
||||
Curl_safefree(sslc->clientcert);
|
||||
}
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче