lua-patterns icon indicating copy to clipboard operation
lua-patterns copied to clipboard

Suspected index out of bounds (UB)

Open matklad opened this issue 3 years ago • 1 comments

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

matklad avatar Nov 07 '22 23:11 matklad

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

riking avatar Feb 27 '24 23:02 riking