From 02bf65a752400c20b1bfbf931a119c782774b8c6 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sat, 10 May 2008 14:20:53 +0200 Subject: [PATCH] urlmon: Better error handling in file protocol. --- dlls/urlmon/file.c | 3 +++ dlls/urlmon/tests/protocol.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/dlls/urlmon/file.c b/dlls/urlmon/file.c index 5c059d14f7f..d3004ac6a22 100644 --- a/dlls/urlmon/file.c +++ b/dlls/urlmon/file.c @@ -119,6 +119,9 @@ static HRESULT WINAPI FileProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl ReleaseBindInfo(&bindinfo); + if(!szUrl || !*szUrl) + return E_INVALIDARG; + if(lstrlenW(szUrl) < sizeof(wszFile)/sizeof(WCHAR) || memcmp(szUrl, wszFile, sizeof(wszFile))) return MK_E_SYNTAX; diff --git a/dlls/urlmon/tests/protocol.c b/dlls/urlmon/tests/protocol.c index 60d0ae82323..6361403f037 100644 --- a/dlls/urlmon/tests/protocol.c +++ b/dlls/urlmon/tests/protocol.c @@ -1384,6 +1384,16 @@ static void test_file_protocol_fail(void) CHECK_CALLED(ReportProgress_SENDINGREQUEST); CHECK_CALLED(ReportResult); + SET_EXPECT(GetBindInfo); + hres = IInternetProtocol_Start(protocol, NULL, &protocol_sink, &bind_info, 0, 0); + ok(hres == E_INVALIDARG, "Start failed: %08x, expected E_INVALIDARG\n", hres); + CHECK_CALLED(GetBindInfo); + + SET_EXPECT(GetBindInfo); + hres = IInternetProtocol_Start(protocol, emptyW, &protocol_sink, &bind_info, 0, 0); + ok(hres == E_INVALIDARG, "Start failed: %08x, expected E_INVALIDARG\n", hres); + CHECK_CALLED(GetBindInfo); + IInternetProtocol_Release(protocol); }