PT-2026-125067
Publicado
2026-10-24
·
Atualizado
2026-10-24
Descrição por
CVSS 4.0
2.1
BaixaMétricasAV:L/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Four code paths create a pointer whose permission is later revoked, then
write through it. Miri reports each as undefined behaviour under both the
Tree Borrows and Stacked Borrows aliasing models (CWE-758). All four are
reachable from safe code with standard
Ord types.- Splice back-pointer.
split off,split off indexandappendstored the first spliced node'sprevpointer from a reference to the head, then wrote through that same reference, invalidating the stored pointer. A laterpop firstorpop frontwrites through it. This affects all four collections. SkipMap::range mutback pointer. With anIncludedorExcludedupper bound, the back pointer came from a shared reference.next backhands out&mut Vthrough it, and writing to that value is undefined behaviour.IterMut::next backreads a yielded node. InSkipListandSkipMap,next backread the predecessor node even after the front end had yielded it as&mut. The read freezes the caller's reference, and the caller's next write through it is undefined behaviour. This affectsiter mut,values mutandrange mutused from both ends.- Cursor list pointer.
lower bound mutandupper bound mutonOrderedSkipListandSkipSet(cursorfeature) took the cursor's list pointer, then searched through&self. A comparator with interior-mutable state, such as aCellcall counter, wrote to the list's memory through that shared borrow and invalidated the cursor's pointer. The comparator can be a fully consistent order.SkipMapcursors are not affected.
No miscompilation has been observed in an optimised build. A future compiler
may still optimise on the violated aliasing assumptions.
The flaws were corrected in 1.3.0. Each fix derives the pointer used for
mutation from the collection's long-lived allocation pointers, and each has a
Miri regression test.
Explorabilidade
Correção
Fornecedores
Produtos afetados
Identificadores relacionados
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾