Обнаружение EOF с помощью API ZLib Gzip? - PullRequest
0 голосов
/ 12 марта 2019

У меня есть пример Gzip Compressed Data | 100-length RNG Pad. Удивительно, что zlib GZip-файл API способен обнаруживать EOF в начале пэда n-длины и не считать его. Попробуйте онлайн

Я попытался посмотреть на заголовок и исходный код , и это были мои лучшие догадки:

  1. На основе исходного кода - Обнаруживает повреждение потока из-за обнаружения недопустимой последовательности байтов - следовательно, gzread возвращает -1.
  2. На основе заголовка файла - Обнаруживает CRC32 в конце в течение последнего read и проверяет соответствующий размер файла после него. Если все совпадает, возвращается EOF.

Может ли кто-нибудь подтвердить мое понимание того, что (1) действительно происходит. Если это так, я предполагаю, что пример, который я опробовал, может быть неопределенным поведением, основанным на случайной последовательности байтов.

1 Ответ

1 голос
/ 12 марта 2019

Если вы спрашиваете о том, обнаружил ли zlib, что он получает случайные данные, которые должны быть потоком gzip, то да, он обычно делает это в течение небольшого количества байтов, основываясь на нарушениях формата заголовка или формата deflate.

...