python / python/cpython

incorrect "http.cookiejar bug" when catching exception

Abierto
#99,453 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

stdlib type-bug
Lenguaje dominante
Python
Estrellas
77.2k
Forks
36k
Merge medio
1 d 9 h
PR fusionados (30 d)
558

Descripción

Bug report

catching certain exceptions from the http.cookiejar module incorrectly triggers an "unhandled exception" warning:

#!/usr/bin/env python3

import logging
from http.cookiejar import LoadError, MozillaCookieJar
from tempfile import NamedTemporaryFile

logging.basicConfig()
log = logging.getLogger()

with NamedTemporaryFile(mode="w") as tmp:
    tmp.write("# Netscape HTTP Cookie File\n%3D\n")
    tmp.seek(0)
    jar = MozillaCookieJar(tmp.name)

    try:
        jar.load()
    except LoadError:
        log.warning("Failed to load cookies")
alexia@cadoth ~ > ./http_cookiejar_bug.py  
/home/alexia/.local/share/pyenv/versions/3.11.0/lib/python3.11/http/cookiejar.py:2080: UserWarning: http.cookiejar bug!
Traceback (most recent call last):
  File "/home/alexia/.local/share/pyenv/versions/3.11.0/lib/python3.11/http/cookiejar.py", line 2041, in _really_load
    domain, domain_specified, path, secure, expires, name, value = \
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 7, got 1)

  _warn_unhandled_exception()
WARNING:root:Failed to load cookies

Your environment

  • CPython versions tested on: 3.9.2, 3.10.8, 3.11.0
  • Operating system and architecture: Debian 11 amd64
Linked PRs
  • gh-99676
  • gh-139395

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza en Lib/http/cookiejar.py, en _really_load y _warn_unhandled_exception, usando el reproducer del issue para observar la advertencia al capturar LoadError. Revisa las PRs vinculadas gh-99676 y gh-139395 y después añade o actualiza una prueba de regresión que muestre que este caso gestionado de cookie malformada ya no produce la advertencia incorrecta.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
networking
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.