Yukihiro "Matz" Matsumoto
fe17d66363
mruby-string-ext: reject surrogates and ill-formed UTF-8
...
Make `Integer#chr("UTF-8")` reject UTF-16 surrogate code points
(U+D800..U+DFFF), and make `String#ord` reject ill-formed UTF-8 byte
sequences (overlong encodings, surrogates encoded as UTF-8, and code
points above U+10FFFF), matching CRuby and RFC 3629.
The `utf8code()` helper now decodes the code point first and then
validates the range per byte length:
len=2: cp >= 0x80 (rejects overlong)
len=3: cp >= 0x800 and not D800..DFFF
len=4: 0x10000 <= cp <= 0x10FFFF
close #2708
Co-authored-by: Claude <noreply@anthropic.com >
2026-05-11 07:48:23 +09:00
..
2026-04-23 19:25:38 +09:00
2026-04-23 19:25:37 +09:00
2026-04-23 19:25:36 +09:00
2026-04-23 19:25:38 +09:00
2026-04-23 19:25:38 +09:00
2026-04-23 19:25:37 +09:00
2026-05-06 18:27:16 +09:00
2025-12-11 18:09:09 +09:00
2026-04-28 12:56:25 +09:00
2026-04-25 19:57:44 +09:00
2026-04-19 21:17:18 +09:00
2026-04-23 19:25:35 +09:00
2026-05-02 20:52:00 +09:00
2025-12-11 18:09:10 +09:00
2026-03-09 16:50:58 +09:00
2025-12-11 18:09:10 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2025-08-14 10:52:49 +09:00
2026-05-09 19:47:27 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-04-23 19:25:37 +09:00
2026-03-09 16:50:58 +09:00
2025-12-11 18:09:06 +09:00
2025-12-11 18:09:09 +09:00
2026-04-23 19:25:25 +09:00
2025-12-11 18:09:07 +09:00
2026-04-23 19:25:21 +09:00
2026-03-09 16:50:58 +09:00
2025-11-08 14:26:49 +09:00
2026-05-08 11:51:25 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-05-10 01:32:33 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-05-10 01:32:33 +09:00
2026-03-24 22:16:15 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2025-06-24 13:56:07 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-04-13 13:11:27 +02:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-05-08 10:32:03 +09:00
2026-03-09 16:50:58 +09:00
2026-03-09 16:50:58 +09:00
2026-05-09 10:22:19 +09:00
2026-04-28 12:56:07 +09:00
2026-03-09 16:50:58 +09:00
2026-05-11 07:48:23 +09:00
2026-03-09 16:50:58 +09:00
2026-05-09 10:32:20 +09:00
2026-04-23 23:16:21 +09:00
2026-03-25 15:32:36 +09:00
2024-09-24 00:14:24 +10:00
2026-03-09 16:50:58 +09:00
2025-08-14 10:52:47 +09:00
2021-01-06 18:10:21 +09:00
2021-01-06 18:10:21 +09:00
2023-04-04 19:31:42 +10:00
2025-10-08 23:55:21 +09:00
2025-05-14 15:58:23 +09:00
2025-05-14 15:58:24 +09:00
2022-11-29 15:58:05 +09:00
2026-04-23 19:25:21 +09:00
2026-04-23 19:25:29 +09:00