I can config the problem on Noble's ESM package that is breaking the LXD
snap builds.

From 
https://launchpadlibrarian.net/863097522/buildlog_snap_ubuntu_noble_amd64_lxd-latest-edge_BUILDING.txt.gz:
```
[29/May/2026:15:55:14 +0000] "GET 
http://private-ppa.buildd/ubuntu-esm/esm-apps-security/ubuntu/pool/main/p/python-pip/python3-pip_24.0%2bdfsg-1ubuntu1.3%2besm1_all.deb
 HTTP/1.1" 200 1320794 "-" "Debian APT-HTTP/1.3 (2.8.3) non-interactive"
[29/May/2026:15:55:14 +0000] "GET 
http://ftpmaster.internal/ubuntu/pool/main/r/rsync/rsync_3.2.7-1ubuntu1.4_amd64.deb
 HTTP/1.1" 200 442294 "-" "Debian APT-HTTP/1.3 (2.8.3) non-interactive"
[29/May/2026:15:55:14 +0000] "GET 
http://private-ppa.buildd/ubuntu-esm/esm-apps-security/ubuntu/pool/main/p/python-pip/python3-pip-whl_24.0%2bdfsg-1ubuntu1.3%2besm1_all.deb
 HTTP/1.1" 200 1707784 "-" "Debian APT-HTTP/1.3 (2.8.3) non-interactive
...
:: + set -eux
:: + pip download --dest python/wheels meson==1.9.0
:: ERROR: Exception:
:: Traceback (most recent call last):
::   File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", 
line 180, in exc_logging_wrapper
::     status = run_func(*args)
::              ^^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", 
line 245, in wrapper
::     return func(self, options, args)
::            ^^^^^^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_internal/commands/download.py", 
line 132, in run
::     requirement_set = resolver.resolve(reqs, check_supported_wheels=True)
::                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py",
 line 95, in resolve
::     result = self._result = resolver.resolve(
::                             ^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers.py", 
line 546, in resolve
::     state = resolution.resolve(requirements, max_rounds=max_rounds)
::             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers.py", 
line 397, in resolve
::     self._add_to_criteria(self.state.criteria, r, parent=None)
::   File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers.py", 
line 173, in _add_to_criteria
::     if not criterion.candidates:
::            ^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", 
line 156, in __bool__
::     return bool(self._sequence)
::            ^^^^^^^^^^^^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py",
 line 155, in __bool__
::     return any(self)
::            ^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py",
 line 143, in <genexpr>
::     return (c for c in iterator if id(c) not in self._incompatible_ids)
::            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py",
 line 44, in _iter_built
::     for version, func in infos:
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py",
 line 297, in iter_index_candidate_infos
::     result = self._finder.find_best_candidate(
::              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 
890, in find_best_candidate
::     candidates = self.find_all_candidates(project_name)
::                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 
831, in find_all_candidates
::     page_candidates = list(page_candidates_it)
::                       ^^^^^^^^^^^^^^^^^^^^^^^^
[29/May/2026:15:59:53 +0000] "CONNECT pypi.org:443 HTTP/1.1" 200 39700 "-" "-"
::   File "/usr/lib/python3/dist-packages/pip/_internal/index/sources.py", line 
194, in page_candidates
::     yield from self._candidates_from_page(self._link)
::                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File 
"/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 
795, in process_project_url
::     page_links = list(parse_links(index_response))
::                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", 
line 223, in wrapper_wrapper
::     return list(fn(page))
::            ^^^^^^^^^^^^^^
::   File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", 
line 236, in parse_links
::     data = json.loads(page.content)
::            ^^^^^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3.12/json/__init__.py", line 346, in loads
::     return _default_decoder.decode(s)
::            ^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3.12/json/decoder.py", line 337, in decode
::     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
::                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::   File "/usr/lib/python3.12/json/decoder.py", line 353, in raw_decode
::     obj, end = self.scan_once(s, idx)
::                ^^^^^^^^^^^^^^^^^^^^^^
:: json.decoder.JSONDecodeError: Expecting property name enclosed in double 
quotes: line 1 column 40961 (char 40960)
```

Trying to reproduce on Resolute, I get similar problems with
25.1.1+dfsg-1ubuntu2+esm1:

```
$ pip download --dest python/wheels meson==1.9.0
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 
105, in _run_wrapper
    status = _inner_run()
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 
96, in _inner_run
    return self.run(options, args)
           ~~~~~~~~^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 
68, in wrapper
    return func(self, options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/download.py", 
line 132, in run
    requirement_set = resolver.resolve(reqs, check_supported_wheels=True)
  File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py",
 line 96, in resolve
    result = self._result = resolver.resolve(
                            ~~~~~~~~~~~~~~~~^
        collected.requirements, max_rounds=limit_how_complex_resolution_can_be
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File 
"/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py",
 line 515, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File 
"/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py",
 line 388, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File 
"/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py",
 line 141, in _add_to_criteria
    if not criterion.candidates:
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 
194, in __bool__
    return bool(self._sequence)
  File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py",
 line 163, in __bool__
    self._bool = any(self)
                 ~~~^^^^^^
  File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py",
 line 147, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
                       ^^^^^^^^
  File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py",
 line 33, in _iter_built
    for version, func in infos:
                         ^^^^^
  File 
"/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py",
 line 307, in iter_index_candidate_infos
    result = self._finder.find_best_candidate(
        project_name=name,
        specifier=specifier,
        hashes=hashes,
    )
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", 
line 906, in find_best_candidate
    candidates = self.find_all_candidates(project_name)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", 
line 843, in find_all_candidates
    page_candidates = list(page_candidates_it)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/sources.py", line 
193, in page_candidates
    yield from self._candidates_from_page(self._link)
               ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", 
line 805, in process_project_url
    page_links = list(parse_links(index_response))
                      ~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", line 
218, in wrapper_wrapper
    return list(fn(page))
  File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", line 
231, in parse_links
    data = json.loads(page.content)
  File "/usr/lib/python3.14/json/__init__.py", line 352, in loads
    return _default_decoder.decode(s)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "/usr/lib/python3.14/json/decoder.py", line 345, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/json/decoder.py", line 361, in raw_decode
    obj, end = self.scan_once(s, idx)
               ~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting property name enclosed in double 
quotes: line 1 column 40961 (char 40960)
```

Still on Resolute, `sudo apt-get install
python3-pip=25.1.1+dfsg-1ubuntu2` is enough to make it work again.

** Changed in: python-pip (Ubuntu)
       Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2154576

Title:
  python3-pip-whl 24.0+dfsg-1ubuntu1.3+esm1: CVE-2025-66471 backport
  truncates gzip-decoded responses

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/2154576/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to