msi: Verify that the first parameter to Installer.OpenPackage is a VT_BSTR.
It seems ugly to open up the parameters in pDispParams, but DispGetParam will happily convert a VT_EMPTY to a VT_BSTR and not return an error.
This commit is contained in:
parent
4687604356
commit
1ff6c08621
|
@ -1587,6 +1587,8 @@ static HRESULT WINAPI InstallerImpl_Invoke(
|
|||
{
|
||||
if (pDispParams->cArgs == 0)
|
||||
return DISP_E_TYPEMISMATCH;
|
||||
if (V_VT(&pDispParams->rgvarg[pDispParams->cArgs - 1]) != VT_BSTR)
|
||||
return DISP_E_TYPEMISMATCH;
|
||||
hr = DispGetParam(pDispParams, 0, VT_BSTR, &varg0, puArgErr);
|
||||
if (FAILED(hr)) return hr;
|
||||
hr = DispGetParam(pDispParams, 1, VT_I4, &varg1, puArgErr);
|
||||
|
|
|
@ -649,14 +649,14 @@ static void test_dispatch(void)
|
|||
dispparams.cArgs = 1;
|
||||
VariantInit(&vararg[0]);
|
||||
hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
|
||||
todo_wine ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
|
||||
ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
|
||||
|
||||
/* Try two empty parameters */
|
||||
dispparams.cArgs = 2;
|
||||
VariantInit(&vararg[0]);
|
||||
VariantInit(&vararg[1]);
|
||||
hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
|
||||
todo_wine ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
|
||||
ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
|
||||
|
||||
/* Try one parameter, the required BSTR. Second parameter is optional.
|
||||
* NOTE: The specified package does not exist, which is why the call fails.
|
||||
|
|
Loading…
Reference in New Issue