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