On Mon, Oct 15, 2018 at 6:14 AM Johannes Schindelin via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > This patch adds the Git side of that feature: by setting http.sslBackend > to "openssl" or "schannel", Git for Windows can now choose the SSL > backend at runtime. > [...] > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > diff --git a/http.c b/http.c > @@ -995,6 +1003,33 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) > +#if LIBCURL_VERSION_NUM >= 0x073800 > + if (http_ssl_backend) { > + const curl_ssl_backend **backends; > + struct strbuf buf = STRBUF_INIT; > + int i; > + > + switch (curl_global_sslset(-1, http_ssl_backend, &backends)) { > + case CURLSSLSET_UNKNOWN_BACKEND: > + strbuf_addf(&buf, _("Unsupported SSL backend '%s'. " > + "Supported SSL backends:"), > + http_ssl_backend); > + for (i = 0; backends[i]; i++) > + strbuf_addf(&buf, "\n\t%s", backends[i]->name); > + die("%s", buf.buf); This is the only 'case' arm which utilizes 'strbuf buf', and it die()s, so no leak despite a lack of strbuf_release(). Okay. > + case CURLSSLSET_NO_BACKENDS: > + die(_("Could not set SSL backend to '%s': " > + "cURL was built without SSL backends"), > + http_ssl_backend); > + case CURLSSLSET_TOO_LATE: > + die(_("Could not set SSL backend to '%s': already set"), > + http_ssl_backend); > + case CURLSSLSET_OK: > + break; /* Okay! */ > + } > + } > +#endif