vtls/rustls: simplify builder cleanup
Don't build `config_builder` just to free the resulting config, free the builder directly. When `cr_init_backend` encounters an error condition setting up the Rustls client configuration it must do something with the `config_builder` that was constructed earlier to avoid a memory leak. The previous implementation preferred to use a pattern of building the builder (thus consuming it) and then freeing the built config (to avoid a memory leak). However, the purpose/intent is clearer when we just free the builder directly instead of building it and freeing the result. Closes #14889
This commit is contained in:
parent
bef0acaf21
commit
d38458d823
@ -646,8 +646,7 @@ cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||||||
if(result != RUSTLS_RESULT_OK) {
|
if(result != RUSTLS_RESULT_OK) {
|
||||||
failf(data, "rustls: failed to parse trusted certificates from blob");
|
failf(data, "rustls: failed to parse trusted certificates from blob");
|
||||||
rustls_root_cert_store_builder_free(roots_builder);
|
rustls_root_cert_store_builder_free(roots_builder);
|
||||||
rustls_client_config_free(
|
rustls_client_config_builder_free(config_builder);
|
||||||
rustls_client_config_builder_build(config_builder));
|
|
||||||
return CURLE_SSL_CACERT_BADFILE;
|
return CURLE_SSL_CACERT_BADFILE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -658,8 +657,7 @@ cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||||||
if(result != RUSTLS_RESULT_OK) {
|
if(result != RUSTLS_RESULT_OK) {
|
||||||
failf(data, "rustls: failed to load trusted certificates");
|
failf(data, "rustls: failed to load trusted certificates");
|
||||||
rustls_root_cert_store_builder_free(roots_builder);
|
rustls_root_cert_store_builder_free(roots_builder);
|
||||||
rustls_client_config_free(
|
rustls_client_config_builder_free(config_builder);
|
||||||
rustls_client_config_builder_build(config_builder));
|
|
||||||
return CURLE_SSL_CACERT_BADFILE;
|
return CURLE_SSL_CACERT_BADFILE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -668,8 +666,7 @@ cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||||||
rustls_root_cert_store_builder_free(roots_builder);
|
rustls_root_cert_store_builder_free(roots_builder);
|
||||||
if(result != RUSTLS_RESULT_OK) {
|
if(result != RUSTLS_RESULT_OK) {
|
||||||
failf(data, "rustls: failed to load trusted certificates");
|
failf(data, "rustls: failed to load trusted certificates");
|
||||||
rustls_client_config_free(
|
rustls_client_config_builder_free(config_builder);
|
||||||
rustls_client_config_builder_build(config_builder));
|
|
||||||
return CURLE_SSL_CACERT_BADFILE;
|
return CURLE_SSL_CACERT_BADFILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -704,8 +701,7 @@ cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data,
|
|||||||
if(result != RUSTLS_RESULT_OK) {
|
if(result != RUSTLS_RESULT_OK) {
|
||||||
failf(data, "rustls: failed to load trusted certificates");
|
failf(data, "rustls: failed to load trusted certificates");
|
||||||
rustls_server_cert_verifier_free(server_cert_verifier);
|
rustls_server_cert_verifier_free(server_cert_verifier);
|
||||||
rustls_client_config_free(
|
rustls_client_config_builder_free(config_builder);
|
||||||
rustls_client_config_builder_build(config_builder));
|
|
||||||
return CURLE_SSL_CACERT_BADFILE;
|
return CURLE_SSL_CACERT_BADFILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user