Jörg Höhle : midimap: Obey the size parameter in GetDevCaps.

Alexandre Julliard julliard at winehq.org
Thu Feb 11 11:08:31 CST 2010


Module: wine
Branch: master
Commit: 788d8720e7972a1986589d6fbf2841da6f1e13fe
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=788d8720e7972a1986589d6fbf2841da6f1e13fe

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Wed Feb 10 08:55:00 2010 +0100

midimap: Obey the size parameter in GetDevCaps.

---

 dlls/midimap/midimap.c |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/dlls/midimap/midimap.c b/dlls/midimap/midimap.c
index 129427f..24fc645 100644
--- a/dlls/midimap/midimap.c
+++ b/dlls/midimap/midimap.c
@@ -448,18 +448,16 @@ static DWORD modSetVolume(MIDIMAPDATA* mom, DWORD dwVolume)
 
 static DWORD modGetDevCaps(UINT wDevID, MIDIMAPDATA* mom, LPMIDIOUTCAPSW lpMidiCaps, DWORD_PTR size)
 {
-    static const WCHAR name[] = {'W','i','n','e',' ','m','i','d','i',' ','m','a','p','p','e','r',0};
-    lpMidiCaps->wMid = 0x00FF;
-    lpMidiCaps->wPid = 0x0001;
-    lpMidiCaps->vDriverVersion = 0x0100;
-    lstrcpyW(lpMidiCaps->szPname, name);
-    lpMidiCaps->wTechnology = MOD_MAPPER;
-    lpMidiCaps->wVoices = 0;
-    lpMidiCaps->wNotes = 0;
-    lpMidiCaps->wChannelMask = 0xFFFF;
-    /* Native returns volume caps of underlying device | MIDICAPS_STREAM */
-    lpMidiCaps->dwSupport = MIDICAPS_VOLUME|MIDICAPS_LRVOLUME;
-
+    static const MIDIOUTCAPSW mappercaps = {
+	0x00FF, 0x0001, 0x0100, /* Manufacturer and Product ID */
+	{'W','i','n','e',' ','m','i','d','i',' ','m','a','p','p','e','r',0},
+	MOD_MAPPER, 0, 0, 0xFFFF,
+	/* Native returns volume caps of underlying device + MIDICAPS_STREAM */
+	MIDICAPS_VOLUME|MIDICAPS_LRVOLUME
+    };
+    if (lpMidiCaps == NULL) return MMSYSERR_INVALPARAM;
+
+    memcpy(lpMidiCaps, &mappercaps, min(size, sizeof(*lpMidiCaps)));
     return MMSYSERR_NOERROR;
 }
 




More information about the wine-cvs mailing list