python / python/cpython

incorrect "http.cookiejar bug" when catching exception

未关闭
#99,453 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

stdlib type-bug
主要语言
Python
星标
77.2k
派生
36k
PR 合并指标
PR 指标待抓取

描述

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

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从 Lib/http/cookiejar.py 中的 _really_load 和 _warn_unhandled_exception 开始,使用 issue 中的 reproducer 观察捕获 LoadError 时的警告。检查相关的 PR gh-99676 和 gh-139395,然后添加或更新一个回归测试,证明这个已处理的格式错误 cookie 情况不再产生错误警告。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
networking
Issue 类型
缺陷
难度
2/5
预计耗时
1-3 小时
活跃度
停滞
描述清晰度
描述清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。