We found a division by zero bug in FFmpeg with a vibecoded fuzzer
В Sony PS2 VPK-демuxe vpk_read_packet происходит деление на ноль из-за отсутствия проверки количества каналов. При обработке последнего блока аудио вычисляются size и skip через деление на par->ch_layout.nb_channels, которое может быть равно нулю из-за некорректного заголовка VPK-файла. Это приводит к SIGFPE и аварийному завершению любого FFmpeg-программы, открывающей вредоносный .vpk-файл или поток. Уязвимость эксплуатируется через 21-байтовый ввод с магией VPK и нулевым полем nb_channels в заголовке, обходя валидацию в vpk_read_header из-за расхождения данных между probing и чтением пакетов в кастомном AVIO-пути фаззера. Ошибка носит детерминированный характер, требует минимальных предусловий и представляет собой надёжный отказ в обслуживании без потенциала для выполнения произвольного кода. Рекомендуется добавить проверку if (par->ch_layout.nb_channels == 0) return AVERROR_INVALIDDATA; в начале vpk_read_packet, чтобы возвращать чистую ошибку вместо генерации исключения. Для регрессионного теста предложен массив из 21 байта, соответствующий краш-входу, при котором av_read_frame должен возвращать -22 (AVERROR_INVALIDDATA) без падения.