ole: ITypeInfo::Invoke stack overwrite fix.
Have enough stack space up to even VT_VARIANTs, fixes a stack corruption.
This commit is contained in:
parent
bce90cfb85
commit
cf173911a3
|
@ -5205,7 +5205,7 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
|
||||||
VARIANT varresult;
|
VARIANT varresult;
|
||||||
SHORT missing_param_offset = func_desc->cParams;
|
SHORT missing_param_offset = func_desc->cParams;
|
||||||
SHORT missing_params = 0;
|
SHORT missing_params = 0;
|
||||||
void *retval; /* pointer for storing byref retvals in */
|
VARIANT retval; /* pointer for storing byref retvals in */
|
||||||
|
|
||||||
hres = S_OK;
|
hres = S_OK;
|
||||||
for (i = 0; i < func_desc->cParams; i++)
|
for (i = 0; i < func_desc->cParams; i++)
|
||||||
|
@ -5238,7 +5238,7 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
|
||||||
arg = prgpvarg[i] = &rgvarg[i];
|
arg = prgpvarg[i] = &rgvarg[i];
|
||||||
memset(arg, 0, sizeof(*arg));
|
memset(arg, 0, sizeof(*arg));
|
||||||
V_VT(arg) = rgvt[i];
|
V_VT(arg) = rgvt[i];
|
||||||
retval = NULL;
|
memset(&retval, 0, sizeof(retval));
|
||||||
V_BYREF(arg) = &retval;
|
V_BYREF(arg) = &retval;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue