You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All of these casts to isize when offsetting are unsafe, since they could become negative numbers and cause us to write outside of the bounds of the array. We should either use to_isize.unwrap() and panic if that occurs, or use a conversion strategy that yields a value that will gives us worse performance but correct behaviour.
At a quick readthrough, it looks like push, pop, truncate, remove, insert all suffer from the same issue if len > isize::MAX.
It looks like one might be able to manipulate that situation in a call to insert() when len == isize::MAX (then the len would get set to size::MAX + 1).
The text was updated successfully, but these errors were encountered:
It's currently impossible to create a SmallVec with a length greater than isize::MAX, because Vec::with_capacity will panic if the capacity overflows isize. I'm not sure if this is guaranteed to remain true in future versions of Rust, though. (It's not documented in the public libstd docs, though it is documented in the unstable liballoc documentation.)
From #28:
The text was updated successfully, but these errors were encountered: