winmm GetDevCaps better pointer check patch
Robert Reif
reif at earthlink.net
Sun Jun 6 11:27:54 CDT 2004
Do better check on pointers to memory to be written to.
-------------- next part --------------
Index: dlls/winmm/winmm.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winmm.c,v
retrieving revision 1.36
diff -u -r1.36 winmm.c
--- dlls/winmm/winmm.c 1 Jun 2004 19:40:48 -0000 1.36
+++ dlls/winmm/winmm.c 6 Jun 2004 16:23:42 -0000
@@ -267,7 +267,8 @@
{
LPWINE_MLD wmld;
- if (lpCaps == NULL) return MMSYSERR_INVALPARAM;
+ if (IsBadWritePtr(lpCaps, uSize))
+ return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get((HANDLE)uDeviceID, MMDRV_MIXER, TRUE)) == NULL)
return MMSYSERR_BADDEVICEID;
@@ -687,7 +688,8 @@
TRACE("(%04X, %p, %d) !\n", uDeviceID, lpCaps, uSize);
- if (lpCaps == NULL) return MMSYSERR_INVALPARAM;
+ if (IsBadWritePtr(lpCaps, uSize))
+ return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get((HANDLE)uDeviceID, MMDRV_AUX, TRUE)) == NULL)
return MMSYSERR_INVALHANDLE;
@@ -1243,7 +1245,8 @@
TRACE("(%u, %p, %u);\n", uDeviceID, lpCaps, uSize);
- if (lpCaps == NULL) return MMSYSERR_INVALPARAM;
+ if (IsBadWritePtr(lpCaps, uSize))
+ return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get((HANDLE)uDeviceID, MMDRV_MIDIOUT, TRUE)) == NULL)
return MMSYSERR_INVALHANDLE;
@@ -1615,7 +1618,8 @@
TRACE("(%d, %p, %d);\n", uDeviceID, lpCaps, uSize);
- if (lpCaps == NULL) return MMSYSERR_INVALPARAM;
+ if (IsBadWritePtr(lpCaps, uSize))
+ return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get((HANDLE)uDeviceID, MMDRV_MIDIIN, TRUE)) == NULL)
return MMSYSERR_INVALHANDLE;
@@ -2540,7 +2544,8 @@
TRACE("(%u %p %u)!\n", uDeviceID, lpCaps, uSize);
- if (lpCaps == NULL) return MMSYSERR_INVALPARAM;
+ if (IsBadWritePtr(lpCaps, uSize))
+ return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get((HANDLE)uDeviceID, MMDRV_WAVEOUT, TRUE)) == NULL)
return MMSYSERR_BADDEVICEID;
@@ -2951,7 +2956,8 @@
TRACE("(%u %p %u)!\n", uDeviceID, lpCaps, uSize);
- if (lpCaps == NULL) return MMSYSERR_INVALPARAM;
+ if (IsBadWritePtr(lpCaps, uSize))
+ return MMSYSERR_INVALPARAM;
if ((wmld = MMDRV_Get((HANDLE)uDeviceID, MMDRV_WAVEIN, TRUE)) == NULL)
return MMSYSERR_BADDEVICEID;
More information about the wine-patches
mailing list