<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>60741</bug_id>
          
          <creation_ts>2026-09-29 17:50:05 +0300</creation_ts>
          <short_desc>python3-module-isal: некорректный zlib-заголовок при сжатии с предустановленным словарём</short_desc>
          <delta_ts>2026-11-03 15:44:45 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>python3-module-isal</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vladislav Glinkin">glinkinvd</reporter>
          <assigned_to name="Sergey Bolshakov">sbolshakov</assigned_to>
          <cc>sbolshakov</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>300582</commentid>
    <comment_count>0</comment_count>
    <who name="Vladislav Glinkin">glinkinvd</who>
    <bug_when>2026-09-29 17:50:05 +0300</bug_when>
    <thetext>Версия пакета: python3-module-isal-1.8.0-alt1

---

`isal_zlib.compressobj(zdict=...)` использует предустановленный словарь при сжатии, но не записывает информацию о нём в zlib-заголовок. Полученный поток не распаковывается стандартным модулем Python `zlib` даже при передаче того же словаря. Это нарушает совместимость при обмене сжатыми данными между реализациями zlib.

---

Шаги воспроизведения:
1) $ PYTHONNOUSERSITE=1 python3 - &lt;&lt;&apos;PY&apos;
import zlib
from isal import isal_zlib

dictionary = b&apos;hello world&apos;
data = dictionary * 10
compressor = isal_zlib.compressobj(level=1, zdict=dictionary)
packed = compressor.compress(data) + compressor.flush()
print(&apos;Stream:&apos;, packed.hex(), &apos;FDICT:&apos;, bool(packed[1] &amp; 0x20))
decompressor = zlib.decompressobj(zdict=dictionary)
assert decompressor.decompress(packed) + decompressor.flush() == data
print(&apos;PASS&apos;)
PY

---

Фактический результат: 
Stream: 785ea32f130072d92b99 FDICT: False
zlib.error: Error -3 while decompressing data: invalid distance too far back

---

Причина и исправление:
В isal_zlib_compressobj_impl файла src/isal/isal_zlibmodule.c вызывается isal_deflate_set_dict, но для zlib-режима не создаётся заголовок с dict_flag и dict_id. Deflate-тело уже использует историю словаря, о наличии которой поток не сообщает декодеру.

Причина подтверждена экспериментально: замена только заголовка устраняет ошибку стандартного zlib при неизменных deflate-теле и trailer. Raw deflate с тем же словарём проходит проверку.

Исправление сохраняет поля словарного заголовка и записывает его один раз перед первым compress() либо flush(). Дальнейшее сжатие выполняется с IGZIP_ZLIB_NO_HDR, сохраняя Adler-32 trailer. Upstream-вариант дополнительно явно записывает DICTID в network byte order для совместимости со старой встроенной ISA-L.

Исправление отправлено upstream: PR:https://github.com/pycompression/python-isal/pull/257, коммит dff90d1e1986cc1f6b7deedc28915fa24de3d41a.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300611</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Bolshakov">sbolshakov</who>
    <bug_when>2026-09-30 11:07:08 +0300</bug_when>
    <thetext>ждём реакции апстрима.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303855</commentid>
    <comment_count>2</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-11-03 15:44:45 +0300</bug_when>
    <thetext>python3-module-isal-1.9.0-alt1 -&gt; sisyphus:

Tue Nov 03 2026 Sergey Bolshakov &lt;sbolshakov@altlinux&gt; 1.9.0-alt1
- 1.9.0 released (closes: 60741, 60742)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>