http://bugs.winehq.org/show_bug.cgi?id=28745
Bug #: 28745 Summary: dsound/tests: uninitialized value used in enum_callback() in func_propset() Product: Wine Version: 1.3.30 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: directx-dsound AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com Classification: Unclassified
Running "make propset.ok" in dsound/tests, valgrind complains:
Conditional jump or move depends on uninitialised value(s) at callback (propset.c:69) by DSPROPERTY_enumWtoA (propset.c:396) by enum_callback (propset.c:306) by enumerate_mmdevices (dsound_main.c:555) by DSPROPERTY_EnumerateW (propset.c:334) by IKsPrivatePropertySetImpl_Get (propset.c:419) by func_propset (propset.c:458) by run_test (test.h:556) by main (test.h:624) Uninitialised value was created by a stack allocation at enum_callback (propset.c:282)
I haven't bisected, but lots of the related code is new, from:
commit 8856ea79f3468d6f532f5f20e9b28c295d6e1db1 Author: Andrew Eikum aeikum@codeweavers.com Date: Tue Sep 27 08:51:33 2011 -0500
dsound: Reimplement PropertySet on mmdevapi.
http://bugs.winehq.org/show_bug.cgi?id=28745
Andrew Eikum aeikum@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |aeikum@codeweavers.com
--- Comment #1 from Andrew Eikum aeikum@codeweavers.com 2012-01-31 13:42:34 CST --- The trouble here is pretty obvious. In <dlls/dsound/propset.c:enum_callback>, the DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA struct never gets filled all the way before being returned to the application. The problem with fixing this is that it isn't "easy."
What we should probably do is build a table of devices on first entry, like WinMM does. Then we can obtain all of that information at once, in one spot, and have it always available. We'll also need to figure out some way of reliably mapping DSound devices to WinMM devices, to fill the WaveDeviceId slot.
https://bugs.winehq.org/show_bug.cgi?id=28745
--- Comment #2 from Austin English austinenglish@gmail.com --- Conditional jump or move depends on uninitialised value(s) at callback (propset.c:70) by DSPROPERTY_enumWtoA (propset.c:388) by enum_callback (propset.c:298) by send_device (dsound_main.c:442) by enumerate_mmdevices (dsound_main.c:502) by DSPROPERTY_EnumerateW (propset.c:326) by DSPROPERTY_EnumerateA (propset.c:411) by IKsPrivatePropertySetImpl_Get (propset.c:525) by propset_private_tests (propset.c:439) by func_propset (propset.c:725) by run_test (test.h:584) by main (test.h:654) Uninitialised value was created by a stack allocation at enum_callback (propset.c:274)
still present.
https://bugs.winehq.org/show_bug.cgi?id=28745
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, source, testcase, | |valgrind
https://bugs.winehq.org/show_bug.cgi?id=28745
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fgouget@codeweavers.com Summary|dsound/tests: uninitialized |dsound:propset: |value used in |uninitialized value used in |enum_callback() in |enum_callback() in |func_propset() |func_propset()