-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
heap buffer overflow in VorbisDecoderInternal::readInternal #40
Comments
heap overflow in VorbisDecoderInternal::readInternalcrash input: crash-7f190cd04b5fbf6f813db4447b5010e63867fe6a.ogg For reference, the fuzzer can be found on my https://github.com/ekse/libnyquist/tree/fuzzing Detailed analysislibnyquist can write past the capacity of In VorbisDecoderInternal::readInternal, the code loops over the following code. The write overflow happens in for (int i = 0; i < framesRead; ++i)
{
for(int ch = 0; ch < d->channelCount; ch++)
{
d->samples[totalFramesRead] = buffer[ch][i];
totalFramesRead++;
}
}
} The size of samples is set in VorbisDecoderInternal::loadAudioData. auto totalSamples = size_t(getTotalSamples());
d->samples.resize(totalSamples * d->channelCount);
inline int64_t getTotalSamples() const { return int64_t(ov_pcm_total(const_cast<OggVorbis_File *>(fileHandle), -1)); } In the crash sample, AddressSanitizer report:
|
Thank you very much @ekse - i'll take a closer look at this soon. |
Hi,
I have discovered a security issue in the vorbis support code that is likely exploitable. How would prefer that I share the details with you?
Sébastien
The text was updated successfully, but these errors were encountered: