2016-05-17 16:45:07 -07:00
|
|
|
From a283ad7a863862caf312843950b88bdfd9faeacc Mon Sep 17 00:00:00 2001
|
2015-05-15 18:00:35 -07:00
|
|
|
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
|
|
|
Date: Sat, 16 May 2015 00:24:35 +0200
|
|
|
|
Subject: wininet: Strip filename if no path is set in cookie.
|
|
|
|
|
|
|
|
The order of the stored cookies doesn't match in /testC, so
|
|
|
|
be a bit less strict in the test.
|
|
|
|
---
|
|
|
|
dlls/wininet/http.c | 11 ++++++++++-
|
|
|
|
dlls/wininet/tests/http.c | 6 +++---
|
|
|
|
2 files changed, 13 insertions(+), 4 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
|
2016-05-17 16:45:07 -07:00
|
|
|
index c44156c..7281512 100644
|
2015-05-15 18:00:35 -07:00
|
|
|
--- a/dlls/wininet/http.c
|
|
|
|
+++ b/dlls/wininet/http.c
|
2015-06-25 07:37:32 -07:00
|
|
|
@@ -764,10 +764,18 @@ static void HTTP_ProcessCookies( http_request_t *request )
|
2015-05-15 18:00:35 -07:00
|
|
|
int HeaderIndex;
|
|
|
|
int numCookies = 0;
|
|
|
|
LPHTTPHEADERW setCookieHeader;
|
|
|
|
+ WCHAR *path, *tmp;
|
|
|
|
|
|
|
|
if(request->hdr.dwFlags & INTERNET_FLAG_NO_COOKIES)
|
|
|
|
return;
|
|
|
|
|
|
|
|
+ path = heap_strdupW(request->path);
|
|
|
|
+ if (!path)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ tmp = strrchrW(path, '/');
|
|
|
|
+ if (tmp && tmp[1]) tmp[1] = 0;
|
|
|
|
+
|
|
|
|
EnterCriticalSection( &request->headers_section );
|
|
|
|
|
|
|
|
while((HeaderIndex = HTTP_GetCustomHeaderIndex(request, szSet_Cookie, numCookies++, FALSE)) != -1)
|
2016-05-17 16:45:07 -07:00
|
|
|
@@ -786,10 +794,11 @@ static void HTTP_ProcessCookies( http_request_t *request )
|
2015-05-15 18:00:35 -07:00
|
|
|
|
2016-05-17 16:45:07 -07:00
|
|
|
name = substr(setCookieHeader->lpszValue, data - setCookieHeader->lpszValue);
|
2015-05-15 18:00:35 -07:00
|
|
|
data++;
|
2016-05-17 16:45:07 -07:00
|
|
|
- set_cookie(substrz(request->server->name), substrz(request->path), name, substrz(data), INTERNET_COOKIE_HTTPONLY);
|
|
|
|
+ set_cookie(substrz(request->server->name), substrz(path), name, substrz(data), INTERNET_COOKIE_HTTPONLY);
|
2015-05-15 18:00:35 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
LeaveCriticalSection( &request->headers_section );
|
|
|
|
+ heap_free(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void strip_spaces(LPWSTR start)
|
|
|
|
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
|
2016-05-17 16:45:07 -07:00
|
|
|
index b3826bb..910a0b4 100644
|
2015-05-15 18:00:35 -07:00
|
|
|
--- a/dlls/wininet/tests/http.c
|
|
|
|
+++ b/dlls/wininet/tests/http.c
|
2016-05-17 16:45:07 -07:00
|
|
|
@@ -2226,7 +2226,7 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
2015-05-15 18:00:35 -07:00
|
|
|
}
|
|
|
|
if (strstr(buffer, "/testC"))
|
|
|
|
{
|
|
|
|
- if (strstr(buffer, "Cookie: cookie=biscuit"))
|
|
|
|
+ if (strstr(buffer, "cookie=biscuit"))
|
|
|
|
send(c, okmsg, sizeof okmsg-1, 0);
|
|
|
|
else
|
|
|
|
send(c, notokmsg, sizeof notokmsg-1, 0);
|
2016-05-17 16:45:07 -07:00
|
|
|
@@ -3196,7 +3196,7 @@ static void test_header_override(int port)
|
2015-05-15 18:00:35 -07:00
|
|
|
ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
ok(ret, "HttpSendRequest failed\n");
|
|
|
|
|
|
|
|
- test_status_code_todo(req, 200);
|
|
|
|
+ test_status_code(req, 200);
|
|
|
|
|
2015-06-25 07:37:32 -07:00
|
|
|
InternetCloseHandle(req);
|
2015-05-15 18:00:35 -07:00
|
|
|
req = HttpOpenRequestA(con, NULL, "/test_cookie_check_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
2016-05-17 16:45:07 -07:00
|
|
|
@@ -3205,7 +3205,7 @@ static void test_header_override(int port)
|
2015-05-15 18:00:35 -07:00
|
|
|
ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
ok(ret, "HttpSendRequest failed\n");
|
|
|
|
|
|
|
|
- test_status_code_todo(req, 200);
|
|
|
|
+ test_status_code(req, 200);
|
|
|
|
|
2015-06-25 07:37:32 -07:00
|
|
|
InternetCloseHandle(req);
|
2015-05-15 18:00:35 -07:00
|
|
|
InternetSetCookieA("http://test.local", "foo", "bar");
|
|
|
|
--
|
2016-05-17 16:45:07 -07:00
|
|
|
2.8.0
|
2015-05-15 18:00:35 -07:00
|
|
|
|