tool_ipfs: accept IPFS gateway URL without set port number

Follow-up to: 56129718b8

Test 1851 added to verify

Pointed out by Codex Security

Closes #20957
This commit is contained in:
Daniel Stenberg 2026-03-17 13:39:28 +01:00
parent f1a5343f5e
commit f4c0590b1c
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
3 changed files with 58 additions and 2 deletions

View file

@ -166,7 +166,8 @@ CURLcode ipfs_url_rewrite(CURLU *uh, const char *protocol, char **url,
/* get gateway parts */
if(curl_url_get(gatewayurl, CURLUPART_HOST, &gwhost, CURLU_URLDECODE) ||
curl_url_get(gatewayurl, CURLUPART_SCHEME, &gwscheme, CURLU_URLDECODE) ||
curl_url_get(gatewayurl, CURLUPART_PORT, &gwport, CURLU_URLDECODE) ||
curl_url_get(gatewayurl, CURLUPART_PORT, &gwport,
CURLU_URLDECODE | CURLU_DEFAULT_PORT) ||
curl_url_get(gatewayurl, CURLUPART_PATH, &gwpath, CURLU_URLDECODE))
goto clean;

View file

@ -230,7 +230,7 @@ test1680 test1681 test1682 test1683 \
test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 \
test1708 test1709 test1710 test1711 test1712 test1713 \
\
test1800 test1801 test1802 test1847 test1848 test1849 test1850 \
test1800 test1801 test1802 test1847 test1848 test1849 test1850 test1851 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \

55
tests/data/test1851 Normal file
View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="US-ASCII"?>
<testcase>
<info>
<keywords>
IPFS
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes" crlf="headers">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 21
Connection: close
Content-Type: text/plain
Funny-head: yesyes
Hello curl from IPFS
</data>
</reply>
# Client-side
<client>
<features>
ipfs
proxy
</features>
<server>
http
</server>
<name>
IPFS gateway using default port number
</name>
<command>
--ipfs-gateway http://somewhere.anywhere "ipfs://r4nd0m" -x http://%HOSTIP:%HTTPPORT
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<protocol crlf="headers">
GET http://somewhere.anywhere/ipfs/r4nd0m HTTP/1.1
Host: somewhere.anywhere
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
</protocol>
</verify>
</testcase>