[PATCH 1/2] oleaut32: Fix uninitialized variable access in VarXor() for earlier failure paths (Coverity).
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/oleaut32/variant.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index 2c60f920f5e..bd1ff17c707 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -4635,6 +4635,7 @@ HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut return S_OK; } + V_VT(&varLeft) = V_VT(&varRight) = VT_EMPTY; VariantInit(&tempLeft); VariantInit(&tempRight); @@ -4653,8 +4654,6 @@ HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut } /* Copy our inputs so we don't disturb anything */ - V_VT(&varLeft) = V_VT(&varRight) = VT_EMPTY; - hRet = VariantCopy(&varLeft, pVarLeft); if (FAILED(hRet)) goto VarXor_Exit; -- 2.33.0
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- There is no reason to have it static. dlls/oleaut32/variant.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c index bd1ff17c707..010b1143172 100644 --- a/dlls/oleaut32/variant.c +++ b/dlls/oleaut32/variant.c @@ -506,13 +506,13 @@ static inline HRESULT VARIANT_CoerceArray(VARIANTARG* pd, VARIANTARG* ps, VARTYP static HRESULT VARIANT_FetchDispatchValue(LPVARIANT pvDispatch, LPVARIANT pValue) { + DISPPARAMS params = { 0 }; HRESULT hres; - static DISPPARAMS emptyParams = { NULL, NULL, 0, 0 }; if ((V_VT(pvDispatch) & VT_TYPEMASK) == VT_DISPATCH) { if (NULL == V_DISPATCH(pvDispatch)) return DISP_E_TYPEMISMATCH; hres = IDispatch_Invoke(V_DISPATCH(pvDispatch), DISPID_VALUE, &IID_NULL, - LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &emptyParams, pValue, + LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, ¶ms, pValue, NULL, NULL); } else { hres = DISP_E_TYPEMISMATCH; -- 2.33.0
participants (1)
-
Nikolay Sivov