| Предыдущий | Следующий |
| ERROR_INVALID_VARIANT | ERROR_AUDIT_FAILED |
ERROR_BAD_COMPRESSION_BUFFER
Буфер сжатия невозможно безопасно декодировать
API сжатия Windows может вернуть эту ошибку при повреждении сжатых байтов или несовпадении параметров сырого режима с параметрами, использованными при создании данных. При COMPRESS_RAW декомпрессор должен использовать тот же сырой режим и точный исходный несжатый размер; неверный размер может привести к этой ошибке или даже к вводящему в заблуждение результату.
Считайте размеры, встроенные в недоверенные сжатые данные, недоверенными. Сохраните исходные сжатые байты, идентификатор алгоритма, флаги, сжатую длину и ожидаемую несжатую длину. Отличайте эту ошибку от ERROR_INSUFFICIENT_BUFFER, означающей слишком маленький выходной буфер. Не выделяйте повторно произвольные объёмы памяти только по повреждённым значениям заголовка.
Что проверить
- Проверьте алгоритм компрессора, флаг raw и метаданные исходного размера.
- Проверьте сжатый блок на обрезку или повреждение при передаче.
- Ограничивайте выделения памяти, вычисляемые из недоверенных сжатых данных.
Ссылки
- Microsoft: Decompress и повреждённые сжатые данные
- Microsoft: сжатие и распаковка файлов
- MS-ERREF: определения ошибок Win32
Нужно найти другой код? Найти другой код состояния или ошибки.