wined3d: Better validation of BltFast destination

Stefan Dösinger stefandoesinger at gmx.at
Wed Jun 23 03:40:30 CDT 2010


Am Dienstag 22 Juni 2010 23:37:20 schrieb Iain Arnell:
> --- a/dlls/wined3d/surface_base.c
> +++ b/dlls/wined3d/surface_base.c
> @@ -1657,6 +1657,11 @@ HRESULT WINAPI
>  IWineD3DBaseSurfaceImpl_BltFast(IWineD3DSurface *iface, DWORD dst
>  lock_dst.right = dstx + w;
>      lock_dst.bottom = dsty + h;
>  
> +    if ( lock_dst.left < 0 || lock_dst.top < 0 ) {
> +        WARN("Application gave us bad desitination offset for
>  BltFast.\n"); +        return WINEDDERR_INVALIDRECT;
> +    }
You're catching only the GDI surface case here since opengl surfaces don't use 
IWineD3DBaseSurfaceImpl_BltFast. I recommend to put this check into ddraw, 
like in your previous attempts(but keep checking for < 0, don't do any bit 
testing magic like in your old patches)



More information about the wine-devel mailing list