Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

key generate subcommand silently coerces any word count other than 12 to 24 words

Offen Anfängerfreundlich
#362 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
84/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
rust
Bereich
cli

Rechercherichtung

Beginne damit, KeySubCommand::Generate und den im Issue beschriebenen Argumentparser für word_count zu finden. Prüfe, wie der Befehl geparste Werte auf bdk_wallet::keys::bip39::WordCount abbildet, und führe dann die relevanten CLI-Tests aus oder probiere die Beispiele mit 15 Wörtern und einem ungültigen Wert aus. Fertig ist die Arbeit, wenn alle fünf unterstützten Längen berücksichtigt und nicht unterstützte Werte mit einer Meldung abgelehnt werden, die die gültigen Optionen auflistet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

Describe the bug

key generate accepts any integer for --word-count but only distinguishes 12 from everything else. The match arm is:

let mnemonic_type = match self.word_count {
    12 => WordCount::Words12,
    _ => WordCount::Words24,
};

So --word-count 15 produces a 24-word mnemonic, --word-count 0 produces a 24-word mnemonic, and --word-count 999 produces a 24-word mnemonic. No error, no warning, no indication that the requested value was ignored. BIP39 defines five valid lengths: 12, 15, 18, 21, 24 and bdk_wallet::keys::bip39 WordCount already support all five, so the restriction is purely in the CLI's argument handling.

To Reproduce

  1. Request a 15-word mnemonic:
    bdk-cli key generate --word-count 15
    
  2. Count the words in the output: it is 24, not 15.
  3. Confirm nonsense values are also accepted without error:
    bdk-cli key generate --word-count 0
    
    This also produces 24 words.

Expected behavior

--word-count 15 should produce a 15-word mnemonic, since the library supports it. Invalid values such as 0, 13, or 999 should be rejected at parse time with a message listing the valid options, not silently coerced. PossibleValuesParser or a custom value_parser handles both:

#[arg(
    long = "word-count",
    short = 'w',
    default_value = "WordCount::Words12",
    value_parser = word_count_parser
)]
pub word_count: WordCount,

in the word_count_parser:

let word_count = match word_count {
    "12" => WordCount::Words12,
    "15" => WordCount::Words15,
    "18" => WordCount::Words18,
    "21" => WordCount::Words21,
    "24" => WordCount::Words24,
    _ => return(Error::Generic("...")), 
};

The change is confined to KeySubCommand::Generate; no library or API changes are needed.

Build environment

· BDK-CLI tag/commit: main
· OS+version: macOS 12.7.6 (Monterey)
· Rust/Cargo version: rustc --version output
· Rust/Cargo target: x86_64-apple-darwin

Additional context

The silent coercion means a user's request is never honoured unless it happens to be exactly 12, and the failure mode is invisible. The command just succeeds and returns a valid mnemonic of the wrong length. Since usize parsing already rejects negative values, the only way to reach the match arm with an unintended value is a typo or an unsupported length, and both currently produce 24 words with no diagnostic. Validating at the clap boundary fixes both the missing lengths and the silent acceptance in a single change.

Vorherrschende Sprache
Rust
Sterne
143
Forks
103
Ø Merge
2 T. 9 Std.
Gemergte PRs (30 T.)
5

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus bitcoindevkit/bdk-cli

Alle Issues in bitcoindevkit/bdk-cli

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.