[PATCH] shlwapi: URL schemes may contain hyphen, plus, or period.

Zebediah Figura zfigura at codeweavers.com
Thu Sep 21 14:49:46 CDT 2017


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 dlls/shlwapi/tests/url.c | 1 +
 dlls/shlwapi/url.c       | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c
index f1c0965bca..ac896b06e4 100644
--- a/dlls/shlwapi/tests/url.c
+++ b/dlls/shlwapi/tests/url.c
@@ -1483,6 +1483,7 @@ static const struct parse_url_test_t {
     {"ab-://www.winehq.org/",S_OK,3,URL_SCHEME_UNKNOWN},
     {" http://www.winehq.org/",URL_E_INVALID_SYNTAX},
     {"HTTP://www.winehq.org/",S_OK,4,URL_SCHEME_HTTP},
+    {"a+-.://www.winehq.org/",S_OK,4,URL_SCHEME_UNKNOWN},
 };
 
 static void test_ParseURL(void)
diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c
index bda4eb2e3f..c7d717b2d7 100644
--- a/dlls/shlwapi/url.c
+++ b/dlls/shlwapi/url.c
@@ -169,7 +169,7 @@ HRESULT WINAPI ParseURLA(LPCSTR x, PARSEDURLA *y)
     if(y->cbSize != sizeof(*y))
         return E_INVALIDARG;
 
-    while(*ptr && (isalnum(*ptr) || *ptr == '-'))
+    while(*ptr && (isalnum(*ptr) || *ptr == '-' || *ptr == '+' || *ptr == '.'))
         ptr++;
 
     if (*ptr != ':' || ptr <= x+1) {
@@ -203,7 +203,7 @@ HRESULT WINAPI ParseURLW(LPCWSTR x, PARSEDURLW *y)
     if(y->cbSize != sizeof(*y))
         return E_INVALIDARG;
 
-    while(*ptr && (isalnumW(*ptr) || *ptr == '-'))
+    while(*ptr && (isalnumW(*ptr) || *ptr == '-' || *ptr == '+' || *ptr == '.'))
         ptr++;
 
     if (*ptr != ':' || ptr <= x+1) {
-- 
2.14.1




More information about the wine-patches mailing list