hsts: on load, only remove exact duplicates
No binary (build failed)
—
(log yok)
| @@ -463,7 +463,7 @@ static CURLcode hsts_add_host_expire(struct hsts *h, | |
| if(hostlen) { | |
| /* only add it if not already present */ | |
| - | e = hsts_check(h, host, hostlen, subdomain); |
| + | e = hsts_check(h, host, hostlen, FALSE); |
| if(!e) | |
| result = hsts_create(h, host, hostlen, subdomain, expires); | |
| /* 'host' is not necessarily null-terminated */ | |
| @@ -2056,7 +2056,7 @@ TESTCASES = \ | |
| test3104 \ | |
| test3105 \ | |
| test3106 \ | |
| - | \ |
| + | test3109 \ |
| test3200 \ | |
| test3201 \ | |
| test3202 \ | |
| @@ -0,0 +1,86 @@ | |
| + | <?xml version="1.0" encoding="US-ASCII"?> |
| + | <testcase> |
| + | <info> |
| + | <keywords> |
| + | HTTP |
| + | HTTP proxy |
| + | HSTS |
| + | </keywords> |
| + | </info> |
| + | |
| + | <reply> |
| + | |
| + | # we use this as response to a CONNECT |
| + | <connect crlf="headers" nocheck="yes"> |
| + | HTTP/1.1 200 OK |
| + | Server: fake |
| + | |
| + | </connect> |
| + | |
| + | <data nocheck="yes"> |
| + | HTTP/1.1 200 OK |
| + | Date: Tue, 09 Nov 2010 14:49:00 GMT |
| + | Content-Type: text/html |
| + | Content-Length: 0 |
| + | |
| + | </data> |
| + | </reply> |
| + | |
| + | <client> |
| + | <server> |
| + | http |
| + | http-proxy |
| + | https |
| + | </server> |
| + | <features> |
| + | HSTS |
| + | proxy |
| + | https |
| + | Debug |
| + | </features> |
| + | |
| + | # October 1, 2024 |
| + | <setenv> |
| + | CURL_HSTS_HTTP=yes |
| + | CURL_TIME=1727733600 |
| + | </setenv> |
| + | |
| + | # the child name has a later expiury than the parent so it must not be removed |
| + | # before |
| + | <file name="%LOGDIR/input%TESTNUMBER"> |
| + | .example.test "20241010 09:42:27" |
| + | .child.example.test "20251010 09:42:27" |
| + | </file> |
| + | |
| + | <name> |
| + | HSTS parent expires before child |
| + | </name> |
| + | <command> |
| + | -x http://%HOSTIP:%PROXYPORT http://child.example.test:%HTTPSPORT/%TESTNUMBER --hsts %LOGDIR/input%TESTNUMBER --insecure |
| + | </command> |
| + | <disable> |
| + | test-duphandle |
| + | </disable> |
| + | </client> |
| + | |
| + | <verify> |
| + | |
| + | <stdout> |
| + | HTTP/1.1 200 OK%CR |
| + | Server: fake%CR |
| + | %CR |
| + | HTTP/1.1 200 OK |
| + | Date: Tue, 09 Nov 2010 14:49:00 GMT |
| + | Content-Type: text/html |
| + | Content-Length: 0 |
| + | |
| + | </stdout> |
| + | |
| + | <file name="%LOGDIR/input%TESTNUMBER" mode="text"> |
| + | # Your HSTS cache. https://curl.se/docs/hsts.html |
| + | # This file was generated by libcurl! Edit at your own risk. |
| + | .example.test "20241010 09:42:27" |
| + | .child.example.test "20251010 09:42:27" |
| + | </file> |
| + | </verify> |
| + | </testcase> |