diff --git a/src/dwarfs/categorizer/pcmaudio_categorizer.cpp b/src/dwarfs/categorizer/pcmaudio_categorizer.cpp index 4767e3e9..6732c4e3 100644 --- a/src/dwarfs/categorizer/pcmaudio_categorizer.cpp +++ b/src/dwarfs/categorizer/pcmaudio_categorizer.cpp @@ -576,6 +576,19 @@ bool pcmaudio_categorizer_::check_aiff( iff_parser parser( LOG_GET_LOGGER, "AIFF", path, data, sizeof(file_hdr_t)); + file_hdr_t file_header; + if (!parser.read_file_header(file_header)) { + return false; + } + + file_header.size = folly::Endian::big(file_header.size); + + if (file_header.size != data.size() - offsetof(file_hdr_t, form)) { + LOG_WARN << "[AIFF] " << path + << ": unexpected file size: " << file_header.size << " (expected " + << data.size() - offsetof(file_hdr_t, form) << ")"; + } + bool meta_valid{false}; uint32_t num_sample_frames; pcmaudio_metadata meta; @@ -878,6 +891,16 @@ bool pcmaudio_categorizer_::check_wav_like( return false; } + size_t const expected_size = + data.size() - + (FormatPolicy::size_includes_header ? 0 : offsetof(file_hdr_t, form)); + + if (file_header.size != expected_size) { + LOG_WARN << "[" << FormatPolicy::format_name << "] " << path + << ": unexpected file size: " << file_header.size << " (expected " + << expected_size << ")"; + } + bool meta_valid{false}; pcmaudio_metadata meta;