RUSTSEC-2026-0486: xattr functions mark unwritten bytes as initialized when given a zero-length buffer
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 50/100
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Rust
- Sterne
- 0
- Forks
- 1
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
storytold/photocraft#14822 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug css
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
dginev/latexml-oxide#853 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 2 Tagen
-
[Bug] export_build_environment admits its output directory only after the export ran in the build computerEvtl. vergeben @viniciusdsandrade hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag