Commit 87c4abb6 authored by Stefan Bühler's avatar Stefan Bühler Committed by Daniel Stenberg
Browse files

HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request

Sending NTLM/Negotiate header again after successful authentication
breaks the connection with certain Proxies and request types (POST to MS
Forefront).
parent 5dc68dd6
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -2323,12 +2323,27 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
      );

  /*
   * Free userpwd now --- cannot reuse this for Negotiate and possibly NTLM
   * with basic and digest, it will be freed anyway by the next request
   * Free userpwd for Negotiate/NTLM. Cannot reuse as it is associated with
   * the connection and shouldn't be repeated over it either.
   */

  switch (data->state.authhost.picked) {
  case CURLAUTH_NEGOTIATE:
  case CURLAUTH_NTLM:
  case CURLAUTH_NTLM_WB:
    Curl_safefree(conn->allocptr.userpwd);
  conn->allocptr.userpwd = NULL;
    break;
  }

  /*
   * Same for proxyuserpwd
   */
  switch (data->state.authproxy.picked) {
  case CURLAUTH_NEGOTIATE:
  case CURLAUTH_NTLM:
  case CURLAUTH_NTLM_WB:
    Curl_safefree(conn->allocptr.proxyuserpwd);
    break;
  }

  if(result)
    return result;