From ecddb7d63306e01d137d65bbbe7b78c1e779943c Mon Sep 17 00:00:00 2001 From: nu774 Date: Thu, 4 Aug 2022 21:06:10 +0900 Subject: [PATCH] wav/caf parser: add format checks fixes https://github.com/nu774/fdkaac/issues/54 --- src/caf_reader.c | 4 +++- src/wav_reader.c | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/caf_reader.c b/src/caf_reader.c index 05b2151..2b9950a 100644 --- a/src/caf_reader.c +++ b/src/caf_reader.c @@ -75,8 +75,10 @@ int caf_desc(caf_reader_t *reader, int64_t chunk_size) ENSURE(mFormatID == M4AF_FOURCC('l','p','c','m')); ENSURE(mSampleRate && mBytesPerPacket && mChannelsPerFrame >= 1 && mChannelsPerFrame <= 8 && - mBitsPerChannel && mFramesPerPacket == 1 && + mBitsPerChannel > 0 && mBitsPerChannel < 256 && + mFramesPerPacket == 1 && mBytesPerPacket % mChannelsPerFrame == 0 && + mBytesPerPacket < 256 && mBytesPerPacket >= mChannelsPerFrame * ((mBitsPerChannel + 7) / 8)); desc->sample_rate = mSampleRate; diff --git a/src/wav_reader.c b/src/wav_reader.c index 4c6cc66..638a625 100644 --- a/src/wav_reader.c +++ b/src/wav_reader.c @@ -113,8 +113,10 @@ int wav_fmt(wav_reader_t *reader, uint32_t size) wValidBitsPerSample = wBitsPerSample; ENSURE(wFormatTag == 1 || wFormatTag == 3 || wFormatTag == 0xfffe); - ENSURE(nChannels && nSamplesPerSec && nAvgBytesPerSec && - nBlockAlign && wBitsPerSample && !(wBitsPerSample & 7) && + ENSURE(nChannels > 0 && nChannels <= 8 && + nSamplesPerSec && nAvgBytesPerSec && + nBlockAlign && nBlockAlign < 256 && + wBitsPerSample && wBitsPerSample < 256 && !(wBitsPerSample & 7) && nBlockAlign == nChannels * wBitsPerSample / 8); if (wFormatTag == 3)