Pickle `FLOAT` opcode inconsistency with whitespace
未关闭
还没有人认领这个 Issue。
extension-modules
type-feature
- 主要语言
- Python
- 星标
- 77.2k
- 派生
- 35.9k
- PR 合并指标
- PR 指标待抓取
描述
Bug report
Bug description:
A lot of Python code tolerates leading and trailing whitespace in string-to-number conversions. However, in the FLOAT opcode of pickle, the Python implementation can tolerate leading/trailing whitespace, while the C implementation throws an error and can't convert it. Note that the INT opcode can gracefully handle leading/trailing whitespace (in both Python and C).
Payloads:
payload: b'F 5\n.'
pickle: 5.0
_pickle.c: FAILURE could not convert string to float: ' 5
'
pickletools:
0: F FLOAT 5.0
4: . STOP
highest protocol among opcodes = 0
payload: b'F5 \n.'
pickle: 5.0
_pickle.c: FAILURE could not convert string to float
pickletools:
0: F FLOAT 5.0
4: . STOP
highest protocol among opcodes = 0
payload: b'I 5 \n.'
pickle: 5
_pickle.c: 5
pickletools:
0: I INT 5
5: . STOP
highest protocol among opcodes = 0
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs
- gh-135619
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先定位 pickle 的 Python 和 C 实现中的 FLOAT opcode,并比较它们对所提供 payload 的处理方式。在 Python 3.13 上运行示例,然后验证两个实现对前导和尾随空白的处理是否一致。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- backend
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 描述清楚
- 新手友好度
- 35/100