zeroize: possible UB in `Zeroize` implementation for `Option<T>`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne in zeroize/src/lib.rs ungefähr bei Zeile 330 und reproduziere das gemeldete Verhalten mithilfe des verlinkten Rust Playground- oder Miri-Beispiels. Ermittle einen sounden Ansatz für die Option-Implementierung und verifiziere, dass das resultierende Verhalten den gemeldeten Fehler aufgrund von undefiniertem Verhalten nicht mehr auslöst.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Originally filed by @jessa0 as https://github.com/iqlusioninc/crates/issues/782:
It seems the
Zeroizeimplementation forOption<T> where T: Zeroizehas language-level UB here:I believe, as a
repr(Rust)enum, the memory layout and set of valid bit-patterns forOptionis not defined, and that setting an enum's storage to an invalid bit-pattern while a reference to it exists, even if the value is never read, is instant language-level UB. The documentation forOptiondoes mention guarantees for several special cases, but theNonecase still isn't defined for many of those cases, and theZeroizeimplementation is more generic than that. Here's an example of a miri error in such a situation, that scottmcm came up with on URLO here.
- Vorherrschende Sprache
- Rust
- Sterne
- 674
- Forks
- 170
- Ø Merge
- 1 T. 12 Std.
- Gemergte PRs (30 T.)
- 10
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
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.
Mehr aus RustCrypto/utils
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
RustCrypto/utils#1546 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
RustCrypto/utils#1537 · 7 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
RustCrypto/utils#1534 · 2 Kommentare ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
RustCrypto/utils#1529 · 4 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
RustCrypto/utils#1510 · 1 Kommentar ·
Alle Issues in RustCrypto/utils
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
bug core
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
-
JIT-compiled number -> Decimal conversion silently overflows instead of raising DECIMAL_OVERFLOW Offenfuzz
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
ClickHouse/ClickHouse#122114 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
linebender/vello_svg#90 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100