If the samples per block and block align values do not match, the file is invalid and decoding will likely fail. Abort in this case rather than returning garbage or crashing later. --- src/wav.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/wav.c b/src/wav.c index 5202556c0e31..3b07e5e25fd3 100644 --- a/src/wav.c +++ b/src/wav.c @@ -760,7 +760,7 @@ static int startread(sox_format_t * ft) lsx_readw(ft, &(wav->samplesPerBlock)); bytesPerBlock = lsx_ms_adpcm_bytes_per_block((size_t) ft->signal.channels, (size_t) wav->samplesPerBlock); - if (bytesPerBlock > wav->blockAlign) + if (bytesPerBlock != wav->blockAlign) { lsx_fail_errno(ft,SOX_EOF,"format[%s]: samplesPerBlock(%d) incompatible with blockAlign(%d)", wav_format_str(wav->formatTag), wav->samplesPerBlock, wav->blockAlign); @@ -816,7 +816,7 @@ static int startread(sox_format_t * ft) lsx_readw(ft, &(wav->samplesPerBlock)); bytesPerBlock = lsx_ima_bytes_per_block((size_t) ft->signal.channels, (size_t) wav->samplesPerBlock); - if (bytesPerBlock > wav->blockAlign || wav->samplesPerBlock%8 != 1) + if (bytesPerBlock != wav->blockAlign || wav->samplesPerBlock%8 != 1) { lsx_fail_errno(ft,SOX_EOF,"format[%s]: samplesPerBlock(%d) incompatible with blockAlign(%d)", wav_format_str(wav->formatTag), wav->samplesPerBlock, wav->blockAlign); -- 2.17.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ SoX-devel mailing list SoX-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sox-devel