Bug 22867 – std.utf.decode changes offset despite error.

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
phobos
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2022-03-10T08:11:35Z
Last change time
2022-03-10T14:38:58Z
Keywords
pull
Assigned to
No Owner
Creator
FeepingCreature

Comments

Comment #0 by default_357-line — 2022-03-10T08:11:35Z
The documentation for `decode` states: "If the code point is not well-formed, then a UTFException is thrown and index remains unchanged." However, fuzzing with /dev/urandom found that this import std.conv; import std.format; import std.utf; void main() { string data = hexString!"f787a598"; size_t offset = 0; try { data.decode(offset); } catch (UTFException ex) { assert(offset == 0, "offset changed to %s despite exception %s".format(offset, ex.msg)); } } fails.
Comment #1 by dlang-bot — 2022-03-10T12:09:00Z
@aG0aep6G created dlang/phobos pull request #8408 "fix issue 22867 - std.utf.decode changes offset despite error." fixing this issue: - fix issue 22867 - std.utf.decode changes offset despite error. https://github.com/dlang/phobos/pull/8408
Comment #2 by dlang-bot — 2022-03-10T14:38:58Z
dlang/phobos pull request #8408 "fix issue 22867 - std.utf.decode changes offset despite error." was merged into master: - 3a97e4a9e97debb6c6d5c7460a52efd3e5d9250c by aG0aep6G: fix issue 22867 - std.utf.decode changes offset despite error. https://github.com/dlang/phobos/pull/8408