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

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

    <bug>
          <bug_id>60742</bug_id>
          
          <creation_ts>2026-09-29 17:53:18 +0300</creation_ts>
          <short_desc>python3-module-isal: BadGzipFile после обратного seek в igzip</short_desc>
          <delta_ts>2026-11-03 15:44:44 +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>300583</commentid>
    <comment_count>0</comment_count>
    <who name="Vladislav Glinkin">glinkinvd</who>
    <bug_when>2026-09-29 17:53:18 +0300</bug_when>
    <thetext>Версия пакета: python3-module-isal-1.8.0-alt1

---

После чтения и обратного перемещения с помощью seek(0) объект igzip.open() может выдавать gzip.BadGzipFile для корректного gzip-архива. Ошибка воспроизводится и на архиве, созданном стандартным модулем gzip. Она препятствует повторному чтению и произвольному доступу в gzip-файлах.

---

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

data = b&apos;hello world&apos; * 24000
packed = gzip.compress(data)
assert gzip.decompress(packed) == data
with igzip.open(io.BytesIO(packed), &apos;rb&apos;) as stream:
    stream.seek(12345)
    assert stream.read(400) == data[12345:12745]
    stream.seek(0)
    assert stream.read() == data
print(&apos;PASS&apos;)
PY

---

Фактический результат:
gzip.BadGzipFile: Not a gzipped file (b&apos;UU&apos;)

---

Причина и исправление:
В GzipReader_seek файла src/isal/isal_zlibmodule.c при обратном перемещении выполняются fp.seek(0), сброс inflater и перевод reader в фазу обработки заголовка. Однако указатели current_pos и buffer_end сохраняют прежний входной буфер сжатых данных. Его остаток принимается за новый gzip-заголовок.

Маленькие файлы или другие последовательности чтения могут не вызывать ошибку: внешний BufferedReader иногда обслуживает seek из буфера распакованных данных без вызова проблемного C-кода.

Исправление после успешного перемещения к началу сбрасывает оба указателя на input_buffer. Дополнительно освобождается Python-результат вызова seek (Py_DECREF(seek_result)). Непосредственная причина BadGzipFile устраняется сбросом указателей.

Исправление отправлено upstream: PR:https://github.com/pycompression/python-isal/pull/258, коммит 1178365e6ffa5ddac3a50bfa2ab0e6d387b122d5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300612</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Bolshakov">sbolshakov</who>
    <bug_when>2026-09-30 11:07:16 +0300</bug_when>
    <thetext>ждём реакции апстрима.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303854</commentid>
    <comment_count>2</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-11-03 15:44:44 +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>