url: handle arbitrary-length username and password before '@'
authorJonathan Nieder <jrnieder@gmail.com>
Mon, 19 Aug 2013 08:36:46 +0000 (01:36 -0700)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 20 Aug 2013 09:16:38 +0000 (11:16 +0200)
commit2f1a0bc0bf36c5ad0f8755d9c7553e1f5729af43
treef06bad1760fc484b22732c0a60a97a7d888dd598
parent09ddb1d61cdb9ee11ebf481b29dac1be8f0ab848
url: handle arbitrary-length username and password before '@'

libcurl quietly truncates usernames, passwords, and options from
before an '@' sign in a URL to 255 (= MAX_CURL_PASSWORD_LENGTH - 1)
characters to fit in fixed-size buffers on the stack.  Allocate a
buffer large enough to fit the parsed fields on the fly instead to
support longer passwords.

After this change, there are no more uses of MAX_CURL_OPTIONS_LENGTH
left, so stop defining that constant while at it.  The hardcoded max
username and password length constants, on the other hand, are still
used in HTTP proxy credential handling (which this patch doesn't
touch).

Reported-by: Colby Ranger
lib/url.c
lib/urldata.h