{ "item_id": "ker-bcrypt_split", "kernel": "bcrypt_split", "advisory": "RUSTSEC-2026-0199", "crate": "bcrypt", "pre_version": "0.19.1", "post_version": "0.19.2", "advisory_url": "https://github.com/Keats/rust-bcrypt/pull/103", "title": "Panic in `bcrypt::verify` on non-ASCII hash input", "source_file": "src/lib.rs", "function": "split_hash_salt_len", "signature": "pub fn split_hash_salt_len(hash: &[u8]) -> Result", "spec_doc": "Validates a bcrypt hash string and returns the salt length (22). A valid hash is exactly 60 ASCII bytes; every other input must give Err, never panic.", "bug_class": "panic", "fidelity": "model_of_std", "extraction_note": "src/lib.rs split_hash: &str slicing at a non-char-boundary on non-ASCII 60-byte input", "witness_args": "&[b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', 0xA3, b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a', b'a']", "labels": { "buggy": "bcrypt@0.19.1", "reference": "bcrypt@0.19.2" } }