diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-05-20 10:00:27 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-05-20 15:27:07 +0200 |
commit | 8b038bcc95c31ef90b1715b21f76ded390de88f2 (patch) | |
tree | 353b07f749c678f0d2fbe49ea9a7954d3676dc3a /tests | |
parent | c454d7f3f433954bcc8300b2a8dd7d9ed0a80d2f (diff) | |
download | curl-8b038bcc95c31ef90b1715b21f76ded390de88f2.tar.gz |
lib1560: add tests for parsing URL with too long scheme
Ref: #3905
Diffstat (limited to 'tests')
-rw-r--r-- | tests/libtest/lib1560.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/libtest/lib1560.c b/tests/libtest/lib1560.c index a18d56a8e..1b72599ec 100644 --- a/tests/libtest/lib1560.c +++ b/tests/libtest/lib1560.c @@ -282,6 +282,14 @@ static struct testcase get_parts_list[] ={ }; static struct urltestcase get_url_list[] = { + /* 40 bytes scheme is the max allowed */ + {"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA://hostname/path", + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa://hostname/path", + CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK}, + /* 41 bytes scheme is not allowed */ + {"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA://hostname/path", + "", + CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_MALFORMED_INPUT}, {"https://[fe80::20c:29ff:fe9c:409b%]:1234", "", 0, 0, CURLUE_MALFORMED_INPUT}, @@ -417,6 +425,16 @@ static int checkurl(const char *url, const char *out) /* !checksrc! disable SPACEBEFORECOMMA 1 */ static struct setcase set_parts_list[] = { + {"https://example.com/", + /* Set a 41 bytes scheme. That's too long so the old scheme remains set. */ + "scheme=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc,", + "https://example.com/", + 0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_MALFORMED_INPUT}, + {"https://example.com/", + /* set a 40 bytes scheme */ + "scheme=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,", + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb://example.com/", + 0, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK, CURLUE_OK}, {"https://[::1%25fake]:1234/", "zoneid=NULL,", "https://[::1]:1234/", |