sox_ng/test/BUG-327/run
Martin Guy 5a67a5df29 Make BUG-327 "succeed" when decoding fails
The test checks for an ASAN failure or a segfault, and when libmad
is not available for decoding, sndfile fails to decode instead of
successfully decoding garbage.
2026-05-27 14:48:10 +02:00

36 lines
1.1 KiB
Bash

#! /bin/sh
# sox.sf.net bug 327. Compile SoX with the -fsanitize=address
# sox-14.4.2, sox_ng-14.4.4, 14.5.1.1
# AddressSanitizer: memcpy-param-overlap: memory ranges [0xb3500100,0xb350012f) and [0xb3500108, 0xb3500137) overlap
# 42b355, sox_ng-14.6.0.3
# OK
# Check SoX was compiled with mp3 support
${sox:-sox} --help-format mp3 || exit 254
# Check SoX was compiled with mp3 decoding support
${sox:-sox} --help-format mp3 | grep -q "Reads: yes" || exit 254
rm -f core core.*
${sox:-sox} sox_memcpy_param_overlap_large.mp3 -t aiff /dev/null channels 1 rate 16k fade 3 norm
status=$?
case $status in
0) status=0 ;;
1) status=1 # The expected ASAN failure
;;
2) # On some systems it "works", on some it says:
# sox_ng FAIL formats: can't open input file `sox_memcpy_param_overlap_large.mp3': File contains data in an unknown format.
# That message comes from libsndfile (the failing system lacks libmad)
# Decoding with "-t hip" fails saying:
# sox_ng FAIL mp3-hip: file ends before MPEG headers are decoded
status=0 ;;
*) ;;
esac
rm -f core core.*
exit $status