gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnurl] 320/411: url: make sure an HSTS upgrade updates URL and scheme c


From: gnunet
Subject: [gnurl] 320/411: url: make sure an HSTS upgrade updates URL and scheme correctly
Date: Wed, 13 Jan 2021 01:22:15 +0100

This is an automated email from the git hooks/post-receive script.

nikita pushed a commit to branch master
in repository gnurl.

commit 20558ff269708bdc796558f7352fa95d82b9b55e
Author: Daniel Stenberg <daniel@haxx.se>
AuthorDate: Thu Nov 5 09:18:52 2020 +0100

    url: make sure an HSTS upgrade updates URL and scheme correctly
    
    Closes #6175
---
 lib/url.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/lib/url.c b/lib/url.c
index b01d470e5..381f98dc6 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -1922,8 +1922,26 @@ static CURLcode parseurlandfillconn(struct Curl_easy 
*data,
 
 #ifdef USE_HSTS
   if(data->hsts && strcasecompare("http", data->state.up.scheme)) {
-    if(Curl_hsts(data->hsts, data->state.up.hostname, TRUE))
-      infof(data, "Switch from HTTP to HTTPS due to HSTS!\n");
+    if(Curl_hsts(data->hsts, data->state.up.hostname, TRUE)) {
+      char *url;
+      Curl_safefree(data->state.up.scheme);
+      uc = curl_url_set(uh, CURLUPART_SCHEME, "https", 0);
+      if(uc)
+        return Curl_uc_to_curlcode(uc);
+      if(data->change.url_alloc)
+        Curl_safefree(data->change.url);
+      /* after update, get the updated version */
+      uc = curl_url_get(uh, CURLUPART_URL, &url, 0);
+      if(uc)
+        return Curl_uc_to_curlcode(uc);
+      uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
+      if(uc)
+        return Curl_uc_to_curlcode(uc);
+      data->change.url = url;
+      data->change.url_alloc = TRUE;
+      infof(data, "Switched from HTTP to HTTPS due to HSTS => %s\n",
+            data->change.url);
+    }
   }
 #endif
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]