From 6dde4e78bf92fc500873bce130c9351028e5298a Mon Sep 17 00:00:00 2001 From: Patryk Obara Date: Sat, 7 Dec 2019 18:56:06 +0100 Subject: [PATCH] Fix usage of uninitialized value in dos_mscdex These issues were detected by Clang static analyzer. Calling GetCurrentPos might leave pos uninitialized, and it will result in passing uninitialized value pos.min to msf_to_frames function. Same situation might happen for GetAudioStatus and all variables it misses to initialize. --- src/dos/dos_mscdex.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dos/dos_mscdex.cpp b/src/dos/dos_mscdex.cpp index b0339ec1..ad84e3a3 100644 --- a/src/dos/dos_mscdex.cpp +++ b/src/dos/dos_mscdex.cpp @@ -900,7 +900,7 @@ static Bit16u MSCDEX_IOCTL_Input(PhysPt buffer,Bit8u drive_unit) { mem_writed(buffer+1,RealMake(mscdex->rootDriverHeaderSeg,0)); break; case 0x01 :{/* Get current position */ - TMSF pos; + TMSF pos = {0, 0, 0}; mscdex->GetCurrentPos(drive_unit,pos); Bit8u addr_mode = mem_readb(buffer+1); if (addr_mode==0) { // HSG @@ -989,8 +989,10 @@ static Bit16u MSCDEX_IOCTL_Input(PhysPt buffer,Bit8u drive_unit) { break; }; case 0x0F :{ /* Get Audio Status */ - bool playing,pause; - TMSF resStart,resEnd; + bool playing = false; + bool pause = false; + TMSF resStart = {0, 0, 0}; + TMSF resEnd = {0, 0, 0}; mscdex->GetAudioStatus(drive_unit,playing,pause,resStart,resEnd); mem_writeb(buffer+1,pause); mem_writeb(buffer+3,resStart.min);