Opened 2 years ago

Closed 2 years ago

#10220 closed defect (fixed)

MOHAWK: MYST: Invalid read in VideoManager::open

Reported by: dafioram Owned by: bgK
Priority: normal Component: Engine: Mohawk
Keywords: Cc:
Game: Myst

Description

scummvm: 8547c89b86f0be02c4b3ef8e8adb4d5f96cf8432
game: myst me english

Running valgrind during the intro movies produces this invalid read report.

==8968== Invalid read of size 1
==8968==    at 0x4C32156: memcpy@GLIBC_2.2.5 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8968==    by 0x3D1EF2: Common::MemoryReadStream::read(void*, unsigned int) (stream.cpp:70)
==8968==    by 0x1A0948: Common::ReadStream::readUint32LE() (stream.h:300)
==8968==    by 0x39F1D0: Common::BitStreamImpl<Common::SeekableReadStream, 32, true, false>::readData() (bitstream.h:65)
==8968==    by 0x39F0E1: Common::BitStreamImpl<Common::SeekableReadStream, 32, true, false>::readValue() (bitstream.h:84)
==8968==    by 0x39EF5B: Common::BitStreamImpl<Common::SeekableReadStream, 32, true, false>::getBit() (bitstream.h:142)
==8968==    by 0x39EDC8: Common::BitStreamImpl<Common::SeekableReadStream, 32, true, false>::skip(unsigned int) (bitstream.h:283)
==8968==    by 0x39C41A: Audio::QDM2Stream::qdm2_decode_super_block() (qdm2.cpp:2092)
==8968==    by 0x39E910: Audio::QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream&, Audio::QueuingAudioStream*) (qdm2.cpp:2538)
==8968==    by 0x39EC60: Audio::QDM2Stream::decodeFrame(Common::SeekableReadStream&) (qdm2.cpp:2613)
==8968==    by 0x37CA0C: Audio::QuickTimeAudioDecoder::AudioSampleDesc::createAudioStream(Common::SeekableReadStream*) const (quicktime.cpp:629)
==8968==    by 0x37BB21: Audio::QuickTimeAudioDecoder::QuickTimeAudioTrack::readAudioChunk(unsigned int) (quicktime.cpp:399)
==8968==  Address 0x12f10d06 is 0 bytes after a block of size 278 alloc'd
==8968==    at 0x4C2E8BF: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8968==    by 0x398152: Audio::QDM2Stream::QDM2Stream(Common::SeekableReadStream*, DisposeAfterUse::Flag) (qdm2.cpp:1219)
==8968==    by 0x39ECB7: Audio::makeQDM2Decoder(Common::SeekableReadStream*, DisposeAfterUse::Flag) (qdm2.cpp:2621)
==8968==    by 0x37CC75: Audio::QuickTimeAudioDecoder::AudioSampleDesc::initCodec() (quicktime.cpp:661)
==8968==    by 0x37BFC3: Audio::QuickTimeAudioDecoder::QuickTimeAudioTrack::enterNewEdit(Audio::Timestamp const&) (quicktime.cpp:463)
==8968==    by 0x37A6A7: Audio::QuickTimeAudioDecoder::QuickTimeAudioTrack::QuickTimeAudioTrack(Audio::QuickTimeAudioDecoder*, Common::QuickTimeParser::Track*) (quicktime.cpp:201)
==8968==    by 0x379E28: Audio::QuickTimeAudioDecoder::init() (quicktime.cpp:134)
==8968==    by 0x2A2833: Video::QuickTimeDecoder::init() (qt_decoder.cpp:206)
==8968==    by 0x2A1CE0: Video::QuickTimeDecoder::loadStream(Common::SeekableReadStream*) (qt_decoder.cpp:71)
==8968==    by 0x1A6D43: Mohawk::VideoManager::open(Common::String const&, Audio::Mixer::SoundType) (video.cpp:329)
==8968==    by 0x1A627E: Mohawk::VideoManager::playMovie(Common::String const&, Audio::Mixer::SoundType) (video.cpp:168)
==8968==    by 0x1A8CCD: Mohawk::MohawkEngine_Myst::playMovie(Common::String const&, Mohawk::MystStack) (myst.cpp:230)

Change History (3)

comment:1 by bgK, 2 years ago

Owner: set to bgK

comment:2 by bgK, 2 years ago

Thanks for your report, this is now fixed (bf3c98815fa2).

comment:3 by bgK, 2 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.