url: normalize CURLINFO_EFFECTIVE_URL

The URL extracted with CURLINFO_EFFECTIVE_URL was returned as given as
input in most cases, which made it not get a scheme prefixed like before
if the URL was given without one, and it didn't remove dotdot sequences
etc.

Added test case 1907 to verify that this now works as intended and as
before 7.62.0.

Regression introduced in 7.62.0

Reported-by: Christophe Dervieux
Fixes #4491
Closes #4493
This commit is contained in:
Daniel Stenberg 2019-10-16 09:57:33 +02:00
parent 347075bc17
commit e062043433
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
5 changed files with 123 additions and 2 deletions

View file

@ -190,7 +190,7 @@ test1700 test1701 test1702 \
\
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 \
test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \

53
tests/data/test1907 Normal file
View file

@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
CURLINFO_EFFECTIVE_URL with non-scheme URL
</name>
<tool>
lib1907
</tool>
<command>
%HOSTIP:%HTTPPORT/hello/../1907
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1907 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
</protocol>
<stdout>
Effective URL: http://%HOSTIP:%HTTPPORT/1907
</stdout>
</verify>
</testcase>