Commit 11332577 authored by Steve Holme's avatar Steve Holme
Browse files

url: Updated proxy URL parsing to use parse_login_details()

parent 702b0dd4
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -4196,16 +4196,13 @@ static CURLcode parse_proxy(struct SessionHandle *data,
  /* Is there a username and password given in this proxy url? */
  atsign = strchr(proxyptr, '@');
  if(atsign) {
    char proxyuser[MAX_CURL_USER_LENGTH];
    char proxypasswd[MAX_CURL_PASSWORD_LENGTH];
    proxypasswd[0] = 0;

    if(1 <= sscanf(proxyptr,
                   "%" MAX_CURL_USER_LENGTH_TXT"[^:@]:"
                   "%" MAX_CURL_PASSWORD_LENGTH_TXT "[^@]",
                   proxyuser, proxypasswd)) {
    CURLcode res = CURLE_OK;
    char *proxyuser = NULL;
    char *proxypasswd = NULL;

    res = parse_login_details(proxyptr, atsign - proxyptr,
                              &proxyuser, &proxypasswd, NULL);
    if(!res) {
      /* found user and password, rip them out.  note that we are
         unescaping them, as there is otherwise no way to have a
         username or password with reserved characters like ':' in
@@ -4223,7 +4220,7 @@ static CURLcode parse_proxy(struct SessionHandle *data,
          res = CURLE_OUT_OF_MEMORY;
      }

      if(CURLE_OK == res) {
      if(!res) {
        conn->bits.proxy_user_passwd = TRUE; /* enable it */
        atsign++; /* the right side of the @-letter */

@@ -4232,11 +4229,14 @@ static CURLcode parse_proxy(struct SessionHandle *data,
        else
          res = CURLE_OUT_OF_MEMORY;
      }
    }

    Curl_safefree(proxyuser);
    Curl_safefree(proxypasswd);

    if(res)
      return res;
  }
  }

  /* start scanning for port number at this point */
  portptr = proxyptr;