mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
The CLI’s `RequestedVersion::Commit` parser rejected many valid commit hashes and allowed invalid ones due to an erroneous regular expression:
* **Old pattern:** `^[a-e0-f]{40}$`
* Allowed non-hex characters outside the `a–f` range
* Excluded the valid hex digit `f` and any uppercase letters
* **New pattern:** [(?i)^[0-9a-f]{40}$](cci:1://file:///d:/Github/vscode/cli/src/desktop/version_manager.rs:102:1-107:2)
* [(?i)](cci:1://file:///d:/Github/vscode/cli/src/desktop/version_manager.rs:102:1-107:2) enables case-insensitive matching (accepts `A–F`)
* Character class now correctly restricts input to hexadecimal digits `0-9` and `a-f`
* Ensures the string is exactly 40 characters, matching a valid SHA-1
#### Impact
`code version use <commit>` and related commands could silently fail or accept malformed commit IDs, leading to unexpected version resolution behavior.
With this fix, only valid 40-character hexadecimal commit hashes are accepted, restoring reliable version selection and preventing subtle bugs.
#### Notes
No API changes; the fix is a single-line update in [cli/src/desktop/version_manager.rs](cci:7://file:///d:/Github/vscode/cli/src/desktop/version_manager.rs:0:0-0:0).