cargo install перестал паниковать на имени пакета с многобайтовым символом

01.12.2025

cargo install теперь правильно проверяет имена пакетов. Раньше строка, начинающаяся с многобайтового символа, приводила к выходу за границы массива и панике.

Как это воспроизводится

Имя крейта должно состоять из латинских букв, цифр и некоторых знаков. Но при копировании из другой программы или наборе на мобильной клавиатуре вместо дефиса легко появляется символ, который выглядит похожим, но не является им, — например, тире.

Прежний код исходил из того, что получает только ASCII, и на таком символе вычислял индекс за границей строки.

Почему это важнее, чем мелкий баг

Паника в инструменте сборки — худший вид отказа: команда не сообщает об ошибке пользователя, а падает с сообщением о внутренней проблеме. То есть человек получает стектрейс компилятора Cargo вместо ответа «так называть пакет нельзя».

Теперь имя проверяется, и сообщение об ошибке корректное.

Оригинал

properly validate crate names in cargo install

Упоминаний: 1 · Просмотров: 2