mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
[WINESYNC] d3dx9: Secure against unsafe iface to COM object transitions.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org> wine commit id cd3e5020e4c87f49eb042fff9f607b6d745a5d55 by Michael Stefaniuc <mstefani@winehq.org>
This commit is contained in:
parent
13aa089045
commit
9add999c51
2 changed files with 13 additions and 2 deletions
|
@ -1772,6 +1772,8 @@ static inline struct d3dx_effect_pool *impl_from_ID3DXEffectPool(ID3DXEffectPool
|
||||||
return CONTAINING_RECORD(iface, struct d3dx_effect_pool, ID3DXEffectPool_iface);
|
return CONTAINING_RECORD(iface, struct d3dx_effect_pool, ID3DXEffectPool_iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline struct d3dx_effect_pool *unsafe_impl_from_ID3DXEffectPool(ID3DXEffectPool *iface);
|
||||||
|
|
||||||
static inline struct d3dx_effect *impl_from_ID3DXEffect(ID3DXEffect *iface)
|
static inline struct d3dx_effect *impl_from_ID3DXEffect(ID3DXEffect *iface)
|
||||||
{
|
{
|
||||||
return CONTAINING_RECORD(iface, struct d3dx_effect, ID3DXEffect_iface);
|
return CONTAINING_RECORD(iface, struct d3dx_effect, ID3DXEffect_iface);
|
||||||
|
@ -6168,8 +6170,8 @@ static HRESULT d3dx9_effect_init(struct d3dx_effect *effect, struct IDirect3DDev
|
||||||
|
|
||||||
if (pool)
|
if (pool)
|
||||||
{
|
{
|
||||||
|
effect->pool = unsafe_impl_from_ID3DXEffectPool(pool);
|
||||||
pool->lpVtbl->AddRef(pool);
|
pool->lpVtbl->AddRef(pool);
|
||||||
effect->pool = impl_from_ID3DXEffectPool(pool);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IDirect3DDevice9_AddRef(device);
|
IDirect3DDevice9_AddRef(device);
|
||||||
|
@ -6481,6 +6483,15 @@ static const struct ID3DXEffectPoolVtbl ID3DXEffectPool_Vtbl =
|
||||||
d3dx_effect_pool_Release
|
d3dx_effect_pool_Release
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline struct d3dx_effect_pool *unsafe_impl_from_ID3DXEffectPool(ID3DXEffectPool *iface)
|
||||||
|
{
|
||||||
|
if (!iface)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
assert(iface->lpVtbl == &ID3DXEffectPool_Vtbl);
|
||||||
|
return impl_from_ID3DXEffectPool(iface);
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT WINAPI D3DXCreateEffectPool(ID3DXEffectPool **pool)
|
HRESULT WINAPI D3DXCreateEffectPool(ID3DXEffectPool **pool)
|
||||||
{
|
{
|
||||||
struct d3dx_effect_pool *object;
|
struct d3dx_effect_pool *object;
|
||||||
|
|
|
@ -15,4 +15,4 @@ files: {include/d3dx9.h: sdk/include/dxsdk/d3dx9.h, include/d3dx9anim.h: sdk/inc
|
||||||
include/d3dx9mesh.h: sdk/include/dxsdk/d3dx9mesh.h, include/d3dx9of.h: sdk/include/dxsdk/d3dx9of.h,
|
include/d3dx9mesh.h: sdk/include/dxsdk/d3dx9mesh.h, include/d3dx9of.h: sdk/include/dxsdk/d3dx9of.h,
|
||||||
include/d3dx9shader.h: sdk/include/dxsdk/d3dx9shader.h, include/d3dx9shape.h: sdk/include/dxsdk/d3dx9shape.h,
|
include/d3dx9shader.h: sdk/include/dxsdk/d3dx9shader.h, include/d3dx9shape.h: sdk/include/dxsdk/d3dx9shape.h,
|
||||||
include/d3dx9tex.h: sdk/include/dxsdk/d3dx9tex.h, include/d3dx9xof.h: sdk/include/dxsdk/d3dx9xof.h}
|
include/d3dx9tex.h: sdk/include/dxsdk/d3dx9tex.h, include/d3dx9xof.h: sdk/include/dxsdk/d3dx9xof.h}
|
||||||
tags: {wine: 3b951b77f87ed9102fc7a2ccb0807b5592990147}
|
tags: {wine: cd3e5020e4c87f49eb042fff9f607b6d745a5d55}
|
||||||
|
|
Loading…
Reference in a new issue