Jacek Caban : wininet: Correctly handle redirects to non-http URLs.

Alexandre Julliard julliard at winehq.org
Wed May 31 16:20:18 CDT 2017


Module: wine
Branch: master
Commit: 9c959154f62840f2c8de45f2a082d5793ae1ece4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9c959154f62840f2c8de45f2a082d5793ae1ece4

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed May 31 16:03:57 2017 +0200

wininet: Correctly handle redirects to non-http URLs.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wininet/http.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 2172f5f..17a1919 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -3993,7 +3993,16 @@ static WCHAR *get_redirect_url(http_request_t *request)
         return NULL;
     }
 
+    urlComponents.dwSchemeLength = 1;
+    b = InternetCrackUrlW(redirect_url, url_length, 0, &urlComponents);
+    if(b && urlComponents.dwSchemeLength &&
+       urlComponents.nScheme != INTERNET_SCHEME_HTTP && urlComponents.nScheme != INTERNET_SCHEME_HTTPS) {
+        TRACE("redirect to non-http URL\n");
+        return NULL;
+    }
+
     urlComponents.lpszScheme = (request->hdr.dwFlags & INTERNET_FLAG_SECURE) ? szHttps : szHttp;
+    urlComponents.dwSchemeLength = 0;
     urlComponents.lpszHostName = request->server->name;
     urlComponents.nPort = request->server->port;
     urlComponents.lpszUserName = session->userName;




More information about the wine-cvs mailing list