pile-audio refactor
All checks were successful
CI / Typos (push) Successful in 20s
CI / Clippy (push) Successful in 2m3s
CI / Build and test (push) Successful in 3m31s

This commit is contained in:
2026-02-21 19:19:41 -08:00
parent 5aab61bd1b
commit bf1241e0a5
136 changed files with 1991 additions and 3390 deletions

View File

@@ -0,0 +1,62 @@
# Group faulty
This group contains files with invalid data and corrupted files
that might trigger crashes in a decoder. A decoder should not
crash or freeze reading these files. Read the README.txt in
the directory faulty for details on each file.
## Manifest
- File 01 has a streaminfo metadata block that lists the wrong
maximum blocksize for the file. The file has a fixed
blocksize of 16384 samples, but the streaminfo metadata block
says the maximum blocksize is 4096. When a decoder
initializes buffers for a blocksize of 4096 and tries to
decode a block with 16384 samples, it might overrun a buffer
- File 02 has a streaminfo metadata block that lists the wrong
maximum framesize for the file. The file has an actual
maximum framesize of 8846 byte, but the streaminfo metadata
block says the maximum framesize is 654 byte. When a decoder
initializes buffers for a frames of at most 654 byte and
tries to read a frame of 8846 byte, it might overrun a buffer
- File 03 has a streaminfo metadata block that lists the wrong
bit depth for the file. It says the bit depth is 24, but the
actual bit depth of all frames is 16.
- File 04 has a streaminfo metadata block that lists the wrong
number of channels for the file. It says the number of
channels is 5, but the actual number of channels is 1.
- File 05 has a streaminfo metadata block that lists the wrong
total number of samples. It says the number of samples is
39842, while the actual total number of samples is 109487
- File 06 doesn't have a streaminfo metadata block, despite
having other metadata blocks, unlike the files 10 and 11 in
the 'uncommon' set of files, which start directly at a frame
header. It does have two other metadata blocks, a vorbis
comment block and a padding block
- File 07 has a streaminfo metadata block that is not the first
metadata block of the file. It is being preceded by two other
metadata blocks, a vorbis comment block and a padding block
- File 08 has a blocksize of 65536, which is representable by
the frame header but not by the streaminfo metadata block,
and is thus invalid
- File 09 has a blocksize of 1, which is not allowed for all
but the last frame of a file
- File 10 has a vorbis comment metadata block with invalid
contents. The block has a correct overall length and has a
single tag, but it states there are 10 tags, which means a
parser could overread the block if it does not check for
validity.
- File 11 has an incorrect metadata block length, which leads
to the parser searching for the next metadata block reading
garbage.