aboutsummaryrefslogtreecommitdiff
path: root/src/xxd
Commit message (Collapse)AuthorAge
* fix(xxd): signed left-shift overflow in -r mode #40246Justin M. Keyes2026-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | (AI-assisted) Problem: Zig build failing since 966e7a98f5bc: FAILED ...r/work/neovim/neovim/test/functional/editor/xxd_spec.lua @ 22: xxd handles long lines in revert mode Expected values to be equal. Expected: 0 Actual: 134 stack traceback: ...r/work/neovim/neovim/test/functional/editor/xxd_spec.lua:26: in function <...r/work/neovim/neovim/test/functional/editor/xxd_spec.lua:22> `huntype` parses the address column by repeatedly left-shifting `want_off` (a signed `long`) by 4 bits per hex digit. After 16 hex digits the value occupies all 64 bits; the next shift moves a non-zero bit into the sign bit -- signed overflow, i.e. undefined behavior. This happens on the Zig build because it enables UBSAN. The bug was pre-existing, but 966e7a98f5bc added a test that exercises it. Solution Shift through `unsigned long` and cast back to `long`, making the overflow well-defined wrap-around.
* fix(xxd): buffer overread #40236OrbisAI Security2026-06-14
| | | | | | | Problem Buffer overflow if lines exceed the expected buffer size. Solution: Use snprintf instead of strcpy.
* fix(ux): drop "Sorry" from messages #38318Justin M. Keyes2026-03-16
| | | | | | | | | Problem: "Sorry" in a message (1) is noise, and (2) actually reduces the clarity of the message because the titlecasing of "Sorry" distracts from the actually important part of the message. Solution: Drop "Sorry" from messages.
* build(windows): vendor xxd.c #36746benarcher26912025-11-29
Problem: Currently we fetch a prebuilt xxd.exe from neovim/deps for Windows, which is not ideal in terms of obviousness, misses updates, and is clumsy to update. Solution: Similar to tee.c (#36363), vendor xxd.c from Vim and build it as part of the Neovim build process. This makes the source obvious, enables analyzer checks, and simplifies updates. Fixes #36664