On Mon, Feb 15, 2016 at 1:44 PM, brian m. carlson
<[email protected]> wrote:
> Performing GSS-Negotiate authentication using Kerberos does not require
> specifying a username or password, since that information is already
> included in the ticket itself. However, libcurl refuses to perform
> authentication if it has not been provided with a username and password.
> Add an option, http.emptyAuth, that provides libcurl with an empty
> username and password to make it attempt authentication anyway.
I'm not familiar with this code, so let me know if my comments (below)
are off the mark...
> ---
> diff --git a/http.c b/http.c
> +++ b/http.c
> @@ -299,14 +300,22 @@ static int http_options(const char *var, const char
> *value, void *cb)
> static void init_curl_http_auth(CURL *result)
> {
> - if (!http_auth.username)
> + if (!http_auth.username) {
> + if (curl_empty_auth)
> + curl_easy_setopt(result, CURLOPT_USERPWD, ":");
Does this need to take LIBCURL_VERSION_NUM into account? Other code
which uses CURLOPT_USERPWD only does so for certain versions of
libcurl, otherwise CURLOPT_USERNAME and CURLOPT_PASSWORD is used.
> return;
> + }
>
> credential_fill(&http_auth);
>
> @@ -827,7 +836,7 @@ struct active_request_slot *get_active_slot(void)
> #ifdef LIBCURL_CAN_HANDLE_AUTH_ANY
> curl_easy_setopt(slot->curl, CURLOPT_HTTPAUTH, http_auth_methods);
> #endif
> - if (http_auth.password)
> + if (http_auth.password || curl_empty_auth)
> init_curl_http_auth(slot->curl);
>
> return slot;
Rather than sprinkling curl_empty_auth special cases here and there,
would it be possible to simply set http_auth.username and
http_auth.password to empty strings early on if they are not already
set and curl_empty_auth is true, and then let the:
strbuf_addf(&up, "%s:%s",
http_auth.username, http_auth.password);
in init_curl_http_auth() handle them in the normal fashion, with the
end result being the same ":" set explicitly by this patch?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html