zeroize: possible UB in `Zeroize` implementation for `Option<T>`
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez dans zeroize/src/lib.rs vers la ligne 330 et reproduisez le comportement signalé à l’aide de l’exemple lié de Rust Playground ou de Miri. Déterminez une approche sûre pour l’implémentation de Option et vérifiez que le comportement obtenu ne déclenche plus l’erreur de comportement indéfini signalée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Rust
- Étoiles
- 674
- Forks
- 170
- Merge moyen
- 1 j 12 h
- PR mergées (30 j)
- 10
Préparer son environnement
Nous n'avons pas encore vérifié les fichiers d'installation de ce projet. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de RustCrypto/utils
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
RustCrypto/utils#1546 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
RustCrypto/utils#1537 · 7 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
RustCrypto/utils#1534 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
RustCrypto/utils#1529 · 4 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
x86: guard CPUID leaf 7 by the maximum basic leaf; AVX detection may need XMM+YMM XCR0 stateOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
RustCrypto/utils#1510 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de RustCrypto/utils
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
trailofbits/dylint#2107 ·
Les mainteneurs répondent en général sous 1 jour
-
area:cli bug good first issue priority:medium
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
rtk-ai/rtk#4289 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
arrays_zip with two same-named inputs fails with "ArrowArray struct has 2 children (expected 1)"Ouvertebug requires-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/datafusion-comet#6251 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
bug false-positive harper-core linting
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Automattic/harper#4471 ·
Les mainteneurs répondent en général sous 1 jour