From: Fabian Maurer dark.shadow4@web.de
--- dlls/advpack/install.c | 5 ++++- dlls/advpack/tests/install.c | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/dlls/advpack/install.c b/dlls/advpack/install.c index f7768cf7852..f717ba72554 100644 --- a/dlls/advpack/install.c +++ b/dlls/advpack/install.c @@ -591,7 +591,7 @@ HRESULT WINAPI ExecuteCabA(HWND hwnd, CABINFOA* pCab, LPVOID pReserved)
TRACE("(%p, %p, %p)\n", hwnd, pCab, pReserved);
- if (!pCab) + if (!pCab || !pCab->pszInf) return E_INVALIDARG;
if (pCab->pszCab) @@ -643,6 +643,9 @@ HRESULT WINAPI ExecuteCabW(HWND hwnd, CABINFOW* pCab, LPVOID pReserved)
TRACE("(%p, %p, %p)\n", hwnd, pCab, pReserved);
+ if (!pCab->pszInf) + return E_INVALIDARG; + ZeroMemory(&info, sizeof(ADVInfo));
if ((pCab->pszCab && *pCab->pszCab) && (pCab->pszInf && *pCab->pszInf) && *pCab->szSrcPath) diff --git a/dlls/advpack/tests/install.c b/dlls/advpack/tests/install.c index bdf02c5a397..fa1d68c5bef 100644 --- a/dlls/advpack/tests/install.c +++ b/dlls/advpack/tests/install.c @@ -262,6 +262,18 @@ static void test_LaunchINFSectionEx(void) DeleteFileA("test.inf"); }
+static void test_ExecuteCab(void) +{ + HRESULT hr; + CABINFOA cabinfoa = {0}; + CABINFOW cabinfow = {0}; + + hr = ExecuteCabA(0, &cabinfoa, 0); + ok(hr == E_INVALIDARG, "Got %lx\n", hr); + hr = ExecuteCabW(0, &cabinfow, 0); + ok(hr == E_INVALIDARG, "Got %lx\n", hr); +} + START_TEST(install) { DWORD len; @@ -289,6 +301,7 @@ START_TEST(install) test_RunSetupCommand(); test_LaunchINFSection(); test_LaunchINFSectionEx(); + test_ExecuteCab();
FreeLibrary(hAdvPack); SetCurrentDirectoryA(prev_path);