Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=33050
-- v2: wininet: Avoid crash in InternetCreateUrl with scheme unknown. wininet: Add missing assignment of return value.
From: Bernhard Übelacker bernhardu@mailbox.org
--- dlls/wininet/tests/url.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/wininet/tests/url.c b/dlls/wininet/tests/url.c index c09315c301f..28269e8dd40 100644 --- a/dlls/wininet/tests/url.c +++ b/dlls/wininet/tests/url.c @@ -1225,7 +1225,7 @@ static void InternetCreateUrlA_test(void) urlComp.dwExtraInfoLength = strlen(urlComp.lpszExtraInfo); len = 256; szUrl = HeapAlloc(GetProcessHeap(), 0, len); - InternetCreateUrlA(&urlComp, ICU_ESCAPE, szUrl, &len); + ret = InternetCreateUrlA(&urlComp, ICU_ESCAPE, szUrl, &len); ok(ret, "Expected success\n"); ok(len == strlen(CREATE_URL13), "Got len %lu\n", len); ok(!strcmp(szUrl, CREATE_URL13), "Expected "%s", got "%s"\n", CREATE_URL13, szUrl);
From: Bernhard Übelacker bernhardu@mailbox.org
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=33050 --- dlls/wininet/internet.c | 6 ++++++ dlls/wininet/tests/url.c | 15 +++++++++++++++ 2 files changed, 21 insertions(+)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index fc962016246..b74015146ea 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -4405,6 +4405,12 @@ static BOOL calc_url_length(LPURL_COMPONENTSW lpUrlComponents, { LPCWSTR scheme;
+ if (lpUrlComponents->nScheme == INTERNET_SCHEME_UNKNOWN) + { + INTERNET_SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + nScheme = lpUrlComponents->nScheme;
if (nScheme == INTERNET_SCHEME_DEFAULT) diff --git a/dlls/wininet/tests/url.c b/dlls/wininet/tests/url.c index 28269e8dd40..2177d651f08 100644 --- a/dlls/wininet/tests/url.c +++ b/dlls/wininet/tests/url.c @@ -1231,6 +1231,21 @@ static void InternetCreateUrlA_test(void) ok(!strcmp(szUrl, CREATE_URL13), "Expected "%s", got "%s"\n", CREATE_URL13, szUrl);
HeapFree(GetProcessHeap(), 0, szUrl); + + memset(&urlComp, 0, sizeof(urlComp)); + fill_url_components(&urlComp); + urlComp.lpszScheme = NULL; + urlComp.dwSchemeLength = 0; + urlComp.nScheme = INTERNET_SCHEME_UNKNOWN; + len = 256; + szUrl = HeapAlloc(GetProcessHeap(), 0, len); + SetLastError(0xdeadbeef); + ret = InternetCreateUrlA(&urlComp, 0, szUrl, &len); + ok(!ret, "Expected failure\n"); + ok(GetLastError() == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + + HeapFree(GetProcessHeap(), 0, szUrl); }
static void InternetCanonicalizeUrl_test(void)
This merge request was approved by Alexandre Julliard.