python / python/cpython

urllib.request.HTTPDigestAuthHandler crashes on a malformed WWW-Authenticate digest challenge

Abierto
#153,792 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
35.9k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Bug description:

urllib.request.AbstractDigestAuthHandler.retry_http_digest_auth parses a
server-controlled WWW-Authenticate: Digest ... challenge without guarding the
parse, so a malformed challenge raises a bare ValueError or IndexError out
of urlopen() instead of being declined:

import urllib.request
h = urllib.request.HTTPDigestAuthHandler(None)
req = urllib.request.Request("http://example.invalid/")
h.retry_http_digest_auth(req, "Digest realm")   # ValueError
h.retry_http_digest_auth(req, "Digest realm=")  # IndexError
h.retry_http_digest_auth(req, "Digest")         # ValueError

Digest realm / Digest realm= fail in parse_keqv_list; Digest fails in
auth.split(' ', 1). The handler should decline a challenge it cannot
parse (return None), as it already does for a 40x it cannot handle.

CPython versions tested on:

3.12, 3.13, 3.14, 3.15

Operating systems tested on:

macOS

Linked PRs
  • gh-153793

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

Comienza en urllib.request.AbstractDigestAuthHandler.retry_http_digest_auth y reproduce los tres challenges WWW-Authenticate malformados que se muestran en el issue. La tarea estará terminada cuando los challenges Digest malformados devuelvan None en lugar de generar ValueError o IndexError; el PR vinculado gh-153793 indica que el trabajo ya está en curso.

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
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.