RUSTSEC-2026-0486: xattr functions mark unwritten bytes as initialized when given a zero-length buffer
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 50/100
Direção de pesquisa
Start in Cargo.toml and Cargo.lock, where the rustix dependency is pinned at 1.1.4. Search the source for calls to getxattr, lgetxattr, fgetxattr, listxattr, llistxattr or flistxattr to see whether this crate uses them at all. Done means rustix is raised to 1.1.6 or later, any call sites are adjusted to the new empty-result behavior, and cargo build and cargo test pass.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
xattr functions mark unwritten bytes as initialized when given a zero-length buffer
| Details | |
|---|---|
| Status | unsound |
| Package | rustix |
| Version | 1.1.4 |
| URL | https://github.com/bytecodealliance/rustix/commit/8e6aaa6713d2bb64b1fdd8c472e3a32a10a76d70 |
| Date | 2026-10-27 |
The extended-attribute functions in rustix::fs (getxattr, lgetxattr, fgetxattr, listxattr, llistxattr and flistxattr) write into a Buffer and then mark as many bytes initialized as the system call reported. When the buffer has zero length, the operating system treats the call as a size query: it writes nothing and returns the size of the attribute value or of the name list. rustix still marked that many bytes as initialized.
Passing a Vec whose length equals its capacity through spare_capacity gives such a zero-length buffer, and rustix then set the vector's length past its capacity over memory that was never written. This is undefined behavior reachable from safe code. With an empty &mut [MaybeUninit<u8>] the call panics instead.
From 1.1.6 these functions return an empty result for a zero-length buffer, and new getxattr_query, lgetxattr_query, fgetxattr_query, listxattr_query, llistxattr_query and flistxattr_query functions return the size. The 0.38 series did not have the Buffer API and is not affected.
See advisory page for additional details.
- Linguagem predominante
- Rust
- Estrelas
- 0
- Forks
- 1
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
storytold/photocraft#14822 ·
Mantenedores costumam responder em até 1 dia
-
bug css
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
dginev/latexml-oxide#853 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 2 dias
-
[Bug] export_build_environment admits its output directory only after the export ran in the build computerTalvez já em andamento @viniciusdsandrade assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia