Jiseok CHOI
ce79cd4853
sqlite3: fix Blob.__setitem__ value range validation ( #7981 )
...
* sqlite3: fix Blob.__setitem__ value range validation
Previously, assigning an out-of-range integer (negative or > 255) or an
integer too large for i64 (e.g. 2**65) to a Blob index raised OverflowError
instead of ValueError.
Mirror CPython's ass_subscript_index logic:
- Convert the value via to_i64(), treating any overflow as -1
- Validate the result is in [0, 255], raising ValueError("byte must be in range(0, 256)") otherwise
- Separate deletion error messages: "item deletion" for index, "slice deletion" for slice
* sqlite3: fix Blob.__setitem__ negative-step slice write
In the step != 1 branch of Blob.ass_subscript, the loop used
i_in_temp += step as usize
where step is isize. For negative steps (e.g. step = -2),
(-2isize) as usize = 18446744073709551614
causing an out-of-bounds panic whenever slice_len >= 2.
Fix: use SaturatedSliceIter (already used by the read path) to iterate
over the correct absolute blob indices, then map each index back to a
temp buffer offset via abs_idx - range_start.
Also fix a Clippy lint: replace
val < 0 || val > 255
with the idiomatic
!(0..=255).contains(&val)
Add a regression test in extra_tests/snippets/stdlib_sqlite.py that
exercises blob[9:0:-2] (negative step, slice_len=5).
* fix: guard blob negative-step snippet from CPython 3.11 bug
* style: add blank line after import sys in stdlib_sqlite snippet (ruff)
* Update extra_tests/snippets/stdlib_sqlite.py
---------
Co-authored-by: Jeong, YunWon <69878+youknowone@users.noreply.github.com >
2026-05-27 16:40:05 +09:00
..
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-11-15 23:09:31 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2026-03-19 09:48:42 +09:00
2025-05-12 14:20:01 +09:00
2026-01-17 19:21:10 +09:00
2026-01-17 19:21:11 +09:00
2026-01-17 19:21:11 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-05-04 10:26:16 +09:00
2026-04-20 21:56:41 +09:00
2025-05-12 14:20:01 +09:00
2025-06-22 00:00:07 +09:00
2025-05-12 14:20:01 +09:00
2026-05-01 19:45:28 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-07-07 19:02:37 +09:00
2026-01-17 19:21:11 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2020-09-13 06:58:57 +09:00
2026-02-28 10:34:38 +09:00
2026-05-04 10:24:08 +09:00
2026-04-23 15:25:52 +09:00
2025-12-28 16:27:32 +09:00
2025-05-12 14:20:01 +09:00
2026-04-27 21:41:40 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-01-29 16:48:02 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-03-16 11:58:40 +09:00
2026-04-30 02:09:16 +00:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-12-25 14:54:44 +09:00
2026-05-01 19:44:42 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-05-03 00:16:27 +09:00
2026-01-09 21:31:21 +09:00
2025-05-12 14:20:01 +09:00
2026-04-24 13:30:02 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-05-09 18:03:21 +00:00
2022-05-08 04:19:38 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-01-06 12:16:51 +09:00
2025-05-12 14:20:01 +09:00
2026-01-17 00:00:16 +09:00
2026-01-17 19:21:11 +09:00
2025-05-12 14:20:01 +09:00
2026-01-17 19:21:11 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2020-09-13 06:58:57 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2022-07-15 15:46:41 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2022-05-04 02:54:59 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-02-08 13:58:30 +00:00
2022-10-17 13:45:15 +09:00
2025-05-12 14:20:01 +09:00
2023-05-23 16:43:52 +09:00
2025-12-28 14:48:27 +09:00
2026-04-19 22:35:09 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2025-12-14 19:17:14 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2026-04-30 02:09:16 +00:00
2025-05-12 14:20:01 +09:00
2025-05-12 14:20:01 +09:00
2026-02-27 16:53:17 +09:00
2025-05-12 14:20:01 +09:00
2026-03-02 01:03:44 +09:00
2026-01-17 19:21:11 +09:00
2026-04-26 12:33:34 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2025-12-12 22:46:39 +09:00
2020-09-13 06:58:57 +09:00
2025-12-24 14:23:33 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2026-04-17 18:45:43 +09:00
2026-05-24 13:43:56 +09:00
2025-12-12 22:46:39 +09:00
2026-01-17 19:21:11 +09:00
2026-05-27 16:40:05 +09:00
2026-05-22 20:04:15 +09:00
2025-12-12 22:46:39 +09:00
2026-04-26 12:31:54 +09:00
2025-12-12 22:46:39 +09:00
2025-05-12 14:20:01 +09:00
2025-12-12 22:46:39 +09:00
2021-11-02 18:28:02 -04:00
2026-05-25 13:55:32 +09:00
2026-04-19 22:32:57 +09:00
2025-05-12 14:20:01 +09:00
2026-02-05 16:20:22 +09:00
2026-01-17 10:34:53 +00:00
2026-05-22 20:04:15 +09:00
2022-05-04 02:54:59 +09:00
2026-04-13 23:58:58 +09:00
2025-12-12 22:46:39 +09:00
2025-08-08 23:31:12 +09:00
2026-01-17 19:21:11 +09:00
2024-05-27 16:54:56 +09:00
2023-10-22 19:19:05 -07:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2025-12-10 20:04:09 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-03-22 17:23:03 +09:00
2022-06-19 22:34:34 +08:00
2022-05-04 02:54:59 +09:00
2023-05-19 14:05:36 -04:00
2025-02-13 14:11:01 +09:00
2022-05-04 02:54:59 +09:00
2026-01-18 01:02:40 +09:00
2025-08-20 14:08:53 +09:00
2026-04-30 02:09:16 +00:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2023-02-13 21:28:19 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2025-08-26 21:48:46 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2026-02-22 19:54:27 +09:00
2026-02-18 00:45:17 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2022-05-04 02:54:59 +09:00
2025-05-12 14:20:01 +09:00
2026-03-08 22:53:26 +09:00
2020-09-13 06:58:57 +09:00