Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V5011. OWASP. Possible overflow....
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V5011. OWASP. Possible overflow. Consider casting operands, not the result.

03 Мар 2021

Анализатор обнаружил подозрительное приведение типов. Результат бинарной операции над 32-битными числами приводят к 64-битному типу.

Пример кода с ошибкой:

unsigned a;
unsigned  b;
....
uint64_t c = (uint64_t)(a * b);

Такое преобразование избыточно. Тип 'unsigned' и так бы автоматически расширился до типа 'uint64_t' при присваивании.

Скорее всего, программист хотел защититься от переполнения, но не достиг цели. При перемножении переменных типа 'unsigned' всё равно произойдёт переполнение, и только уже бессмысленный результат умножения будет явно расширен до типа 'uint64_t'.

Следовало привести один из аргументов к этому типу, чтобы избежать переполнения. Корректный код:

uint64_t c = (uint64_t)a * b;

Данная диагностика классифицируется как: