lua-patterns
lua-patterns copied to clipboard
Suspected index out of bounds (UB)
TL;DR: my code crashes if I remove unrelated printf, and cargo miri complains, which together look very much like some UB in unsafe code. I haven't yet dug into this, but here's a relatively self-contained repro:
https://github.com/matklad/djot-rs/commit/3209527145516383fe29829ddc9bb09ab887c4c6
As this is UB, not sure whether it'll repro on a different setup.
λ cargo --version
cargo 1.66.0-beta.1 (7e484fc1a 2022-10-27)
λ uname -a
Linux Ishmael 6.0.6 #1-NixOS SMP PREEMPT_DYNAMIC Sat Oct 29 08:08:36 UTC 2022 x86_64 GNU/Linux
No need for a separate test case, the repository's own tests are enough:
https://asan.saethlin.dev/ub?crate=lua-patterns&version=0.4.0
running 5 tests
test tests::bad_patterns ... =================================================================
==6922==ERROR: AddressSanitizer: global-buffer-overflow on address 0x5633d6f8b68c at pc 0x5633d664d8a6 bp 0x7fcea7bf4170 sp 0x7fcea7bf4168
READ of size 1 at 0x5633d6f8b68c thread T1
#0 0x5633d664d8a5 in lua_patterns::luapat::at::h7a5144b132b1281f /build/src/luapat.rs:25:14
#1 0x5633d66553af in lua_patterns::luapat::MatchState::str_match_check::h749708f3a40841ea /build/src/luapat.rs:544:24
#2 0x5633d6656f55 in lua_patterns::luapat::str_check::h0d583b02522d6daf /build/src/luapat.rs:614:5
#3 0x5633d6674067 in lua_patterns::LuaPattern::from_bytes_try::h4e6e87d8207cd344 /build/src/lib.rs:61:9
#4 0x5633d66743fc in lua_patterns::LuaPattern::new_try::h1ce77f92fc908681 /build/src/lib.rs:72:9
#5 0x5633d66806dc in lua_patterns::tests::bad_patterns::h753b7ae07bd88614 /build/src/lib.rs:883:23
#6 0x5633d667fb12 in lua_patterns::tests::bad_patterns::_$u7b$$u7b$closure$u7d$$u7d$::hcf2794b8c9080bdd /build/src/lib.rs:873:22