diff options
| author | Travis Staloch <1562827+travisstaloch@users.noreply.github.com> | 2023-11-28 13:48:49 -0800 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2023-12-11 17:49:22 +0200 |
| commit | 5bbacb0c8ce1aa59af5e898e255c544786059d06 (patch) | |
| tree | adbfde693ae4952daabce2aea03a3c6216acc846 /lib/std/json | |
| parent | a817e27c7d459c8bba4b41931a842158bf3df2d0 (diff) | |
| download | zig-5bbacb0c8ce1aa59af5e898e255c544786059d06.tar.gz zig-5bbacb0c8ce1aa59af5e898e255c544786059d06.zip | |
fmt.parseWithSign(): prevent edge case overflows
previously when T was smaller than 8 bits, it was possible for base
to overflow T (because base is a u8). this patch prevents this by
accumulating into a U rather than T which is at least 8 bits wide.
this is the best way i could think of to maintain performance. this
will only affect parsing of integers less than 8 bits by adding one
additional cast at return. additionally, this patch may be slightly
slower to return an error for integers less than 8 bits which overflow
because it will accumulate a few more digits before the overflow check
at return.
* add tests which previously overflowed when they shouldn't have
closes #18157
Diffstat (limited to 'lib/std/json')
0 files changed, 0 insertions, 0 deletions
