[PATCH v2] winmm: Initialize reserved fields of data returned by waveOutGetDevCapsA and waveInGetDevCapsA (Coverity)
Nikolay Sivov
nsivov at codeweavers.com
Wed Nov 18 12:37:59 CST 2015
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
v2 with some tests
dlls/winmm/tests/capture.c | 4 ++++
dlls/winmm/tests/wave.c | 4 ++++
dlls/winmm/waveform.c | 2 ++
3 files changed, 10 insertions(+)
diff --git a/dlls/winmm/tests/capture.c b/dlls/winmm/tests/capture.c
index 54c3793..bc17ce3 100644
--- a/dlls/winmm/tests/capture.c
+++ b/dlls/winmm/tests/capture.c
@@ -316,6 +316,7 @@ static void wave_in_test_device(UINT_PTR device)
GetSystemInfo(&sSysInfo);
dwPageSize = sSysInfo.dwPageSize;
+ memset(&capsA, 0xff, sizeof(capsA));
rc=waveInGetDevCapsA(device,&capsA,sizeof(capsA));
ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID ||
rc==MMSYSERR_NODRIVER,
@@ -323,11 +324,14 @@ static void wave_in_test_device(UINT_PTR device)
dev_name(device),wave_in_error(rc));
if (rc==MMSYSERR_BADDEVICEID || rc==MMSYSERR_NODRIVER)
return;
+ ok(capsA.wReserved1 != 0xffff, "got %u\n", capsA.wReserved1);
+ memset(&capsW, 0xcc, sizeof(capsW));
rc=waveInGetDevCapsW(device,&capsW,sizeof(capsW));
ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_NOTSUPPORTED,
"waveInGetDevCapsW(%s): MMSYSERR_NOERROR or MMSYSERR_NOTSUPPORTED "
"expected, got %s\n",dev_name(device),wave_in_error(rc));
+ ok(capsW.wReserved1 == 0, "got %u\n", capsW.wReserved1);
rc=waveInGetDevCapsA(device,NULL,sizeof(capsA));
ok(rc==MMSYSERR_INVALPARAM,
diff --git a/dlls/winmm/tests/wave.c b/dlls/winmm/tests/wave.c
index a2fe8bb..896f332 100644
--- a/dlls/winmm/tests/wave.c
+++ b/dlls/winmm/tests/wave.c
@@ -893,6 +893,7 @@ static void wave_out_test_device(UINT_PTR device)
GetSystemInfo(&sSysInfo);
dwPageSize = sSysInfo.dwPageSize;
+ memset(&capsA, 0xcc, sizeof(capsA));
rc=waveOutGetDevCapsA(device,&capsA,sizeof(capsA));
ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID ||
rc==MMSYSERR_NODRIVER,
@@ -900,11 +901,14 @@ static void wave_out_test_device(UINT_PTR device)
dev_name(device),wave_out_error(rc));
if (rc==MMSYSERR_BADDEVICEID || rc==MMSYSERR_NODRIVER)
return;
+ ok(capsA.wReserved1 == 0, "got %u\n", capsA.wReserved1);
+ memset(&capsW, 0xcc, sizeof(capsW));
rc=waveOutGetDevCapsW(device,&capsW,sizeof(capsW));
ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_NOTSUPPORTED,
"waveOutGetDevCapsW(%s): MMSYSERR_NOERROR or MMSYSERR_NOTSUPPORTED "
"expected, got %s\n",dev_name(device),wave_out_error(rc));
+ ok(capsW.wReserved1 == 0, "got %u\n", capsW.wReserved1);
rc=waveOutGetDevCapsA(device,0,sizeof(capsA));
ok(rc==MMSYSERR_INVALPARAM,
diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c
index 1afef74..55f48a8 100644
--- a/dlls/winmm/waveform.c
+++ b/dlls/winmm/waveform.c
@@ -2629,6 +2629,7 @@ UINT WINAPI waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA lpCaps,
wocA.dwFormats = wocW.dwFormats;
wocA.wChannels = wocW.wChannels;
wocA.dwSupport = wocW.dwSupport;
+ wocA.wReserved1 = 0;
memcpy(lpCaps, &wocA, min(uSize, sizeof(wocA)));
}
return ret;
@@ -3354,6 +3355,7 @@ UINT WINAPI waveInGetDevCapsA(UINT_PTR uDeviceID, LPWAVEINCAPSA lpCaps, UINT uSi
sizeof(wicA.szPname), NULL, NULL );
wicA.dwFormats = wicW.dwFormats;
wicA.wChannels = wicW.wChannels;
+ wicA.wReserved1 = 0;
memcpy(lpCaps, &wicA, min(uSize, sizeof(wicA)));
}
return ret;
--
2.6.2
More information about the wine-patches
mailing list