Skip to content

Commit 38896d4

Browse files
dschoGit for Windows Build Agent
authored andcommitted
http: fix bug in ntlm_allow=1 handling (#6136)
In 816db62 (credential: advertise NTLM suppression and allow helpers to re-enable, 2026-02-09), Git learned to advertise that NTLM authentication was suppressed to credential helpers. It also introduced a way to allow credential helpers to opt-back-in to NTLM authentication via the `ntlm_allow=1` credential protocol flag. There is a bug in the logic of 816db62 that means we are responding to the `ntlm_allow=1` signal too late in the auth retry codepath; we've already made the second-attempt request! Move adding of NTLM as a valid auth method to `http_request_reauth` right after the credential helper is consulted following the first request, but (now) before we made the second request.
2 parents 28ffb84 + 49adc0a commit 38896d4

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

http.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,10 +1933,6 @@ static int handle_curl_result(struct slot_results *results)
19331933
else if (results->http_code == 401) {
19341934
http_auth.ntlm_suppressed = (results->auth_avail & CURLAUTH_NTLM) &&
19351935
!(http_auth_any & CURLAUTH_NTLM);
1936-
if (http_auth.ntlm_suppressed && http_auth.ntlm_allow) {
1937-
http_auth_methods |= CURLAUTH_NTLM;
1938-
return HTTP_REAUTH;
1939-
}
19401936
if ((http_auth.username && http_auth.password) ||\
19411937
(http_auth.authtype && http_auth.credential)) {
19421938
if (http_auth.multistage) {
@@ -2469,6 +2465,13 @@ static int http_request_recoverable(const char *url,
24692465
credential_fill(the_repository, &http_auth, 1);
24702466
}
24712467

2468+
/*
2469+
* Re-enable NTLM auth if the helper allows it and we would
2470+
* otherwise suppress authentication via NTLM.
2471+
*/
2472+
if (http_auth.ntlm_suppressed && http_auth.ntlm_allow)
2473+
http_auth_methods |= CURLAUTH_NTLM;
2474+
24722475
ret = http_request(url, result, target, options);
24732476
}
24742477
if (ret == HTTP_RATE_LIMITED) {

0 commit comments

Comments
 (0)