MAX_PALETTE limit check (take 2)
Carlos Lozano
clozano at andago.com
Sat Nov 1 05:38:21 CST 2003
Hello,
The old patch was incomplete, better apply this one.
Actually there is defined 256 palettes, commandos 3
needs 512, but gta3 a bigger number.
Changelog
Checked that don't write out of the range of palettes
defined.
Regards,
Carlos.
--
___ _ \ | / Consulting
| . |._ _ _| | ___ ___ ___ http://www.andago.com
| || ' |/ . |<_> |/ . |/ . \__ GNU/Linux
|_|_||_|_|\___|<___|\_. |\___/ _ \ __|\ \ /
Carlos A. Lozano <___'/ | \ -_) __/\__ \ > < -_)
[ carlos.lozano at andago.com ]\___|_| ____/ _/\_\___|
[ calb at epsxe.com ] http://www.epsxe.com
-------------- next part --------------
Index: dlls/d3d8/device.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/device.c,v
retrieving revision 1.90
diff -u -r1.90 device.c
--- dlls/d3d8/device.c 31 Oct 2003 04:15:07 -0000 1.90
+++ dlls/d3d8/device.c 1 Nov 2003 11:35:03 -0000
@@ -3585,11 +3585,17 @@
ICOM_THIS(IDirect3DDevice8Impl,iface);
FIXME("(%p) : setting p[%u] <= RGBA(%02x,%02x,%02x,%02x)\n", This, PaletteNumber,
pEntries->peRed, pEntries->peGreen, pEntries->peBlue, pEntries->peFlags);
+ if (PaletteNumber >= MAX_PALETTES) {
+ return D3DERR_INVALIDCALL;
+ }
memcpy(This->palettes[PaletteNumber], pEntries, 256 * sizeof(PALETTEENTRY));
return D3D_OK;
}
HRESULT WINAPI IDirect3DDevice8Impl_GetPaletteEntries(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber, PALETTEENTRY* pEntries) {
ICOM_THIS(IDirect3DDevice8Impl,iface);
+ if (PaletteNumber >= MAX_PALETTES) {
+ return D3DERR_INVALIDCALL;
+ }
memcpy(pEntries, This->palettes[PaletteNumber], 256 * sizeof(PALETTEENTRY));
FIXME("(%p) : returning p[%u] => RGBA(%02x,%02x,%02x,%02x)\n", This, PaletteNumber,
pEntries->peRed, pEntries->peGreen, pEntries->peBlue, pEntries->peFlags);
@@ -3598,6 +3604,9 @@
HRESULT WINAPI IDirect3DDevice8Impl_SetCurrentTexturePalette(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber) {
ICOM_THIS(IDirect3DDevice8Impl,iface);
FIXME("(%p) : Setting to (%u)\n", This, PaletteNumber);
+ if (PaletteNumber >= MAX_PALETTES) {
+ return D3DERR_INVALIDCALL;
+ }
This->currentPalette = PaletteNumber;
#if defined(GL_EXT_paletted_texture)
More information about the wine-patches
mailing list