winhttp/url.c: Fix of invalid behaviour of WinHttpCrackUrl

Maciej Borsz maciejborsz at gmail.com
Mon Mar 15 16:56:48 CDT 2010


Fix of invalid behaviour of WinHttpCrackUrl when in url is '@'.

For example:
WinHttpCrackUrl(L"
http://example.net/path?var1=example@example.com&var2=x&var3=y", NULL, NULL,
sth)

returned:
scheme(L"http") host(L"example.com&var2=x&var3=y") port(80) path(L"")
extra(L"")

instead of:
scheme(L"http") host(L"example.net") port(80) path(L"/path/") extra(L"?var1=
example at example.com&var2=x&var3=y")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20100315/50b5701a/attachment.htm>
-------------- next part --------------
From 39b51f660f50c021841250d48171580a8a5e1b87 Mon Sep 17 00:00:00 2001
From: Maciej Borsz <maciejborsz at gmail.com>
Date: Mon, 15 Mar 2010 22:51:59 +0100
Subject: winhttp/url.c: Fix of invalid behaviour of WinHttpCrackUrl

Fix of invalid behaviour of WinHttpCrackUrl when in url is '@'.

For example:
WinHttpCrackUrl(L"http://example.net/path?var1=example@example.com&var2=x&var3=y", NULL, NULL, sth)

returned:
scheme(L"http") host(L"example.com&var2=x&var3=y") port(80) path(L"") extra(L"")

instead of:
scheme(L"http") host(L"example.net") port(80) path(L"/path/") extra(L"?var1=example at example.com&var2=x&var3=y")
---
 dlls/winhttp/url.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/dlls/winhttp/url.c b/dlls/winhttp/url.c
index 49ffc4f..09835b4 100644
--- a/dlls/winhttp/url.c
+++ b/dlls/winhttp/url.c
@@ -133,7 +133,7 @@ BOOL WINAPI WinHttpCrackUrl( LPCWSTR url, DWORD len, DWORD flags, LPURL_COMPONEN
     p += 2;
 
     if (!p[0]) goto exit;
-    if ((q = memchrW( p, '@', len - (p - url) )))
+    if ((q = memchrW( p, '@', len - (p - url) )) && !(memchrW( p, '/', q - p )))
     {
         if ((r = memchrW( p, ':', q - p )))
         {
-- 
1.6.3.3


More information about the wine-patches mailing list