Операция конвейера `carve <ratio>` imagecli (Carve::apply() в src/image_ops.rs) только утверждает `ratio <= 1.0`, никогда не проверяя, является ли соотношение положительным. Отрицательное соотношение (например, -5) приводит к тому, что вычисленная целевая ширина достигает 0 с помощью определенного в Rust приведения float к uint, которое затем передается в imageproc::seam_carving::shrink_width — функцию, которая паникует, когда ей задана ширина ниже 2, что приводит к сбою процесса. Это имеет ту же основную причину отсутствия проверки ввода, что и обнаружение родственного «масштаба» в том же файле, но это независимо исправляемый, отдельный путь к коду.
Показать оригинальное описание (EN)
imagecli's pipeline operation (Carve::apply in src/image_ops.rs) only asserts , never validating that the ratio is positive. A negative ratio (e.g. -5) causes the computed target width to saturate to 0 via Rust's defined float-to-uint cast, which is then passed to imageproc::seam_carving::shrink_width — a function that panics when given a width below 2, crashing the process.
Характеристики атаки
Последствия
Строка CVSS v3.1