Операнд правой стороны операторов целочисленного деления или остатка не должен быть равен нулю
Операнд правой стороны операторов целочисленного деления или остатка не должен быть равен нулю.
Если числитель является минимально возможным значением, а знаменатель - -1, операция разделения переполняется, поскольку результат не может быть представлен текущим размером переменной.
Если знаменатель равен нулю, операция деления может привести к аварийному завершению программы.
Эти риски могут использоваться для выполнения произвольного кода. Этот код обычно выходит за рамки неявной политики безопасности программы.
Если второй операнд остатка равен нулю, операция остатка завершается неуспешно, что приводит к аварийному завершению программы.
Если второй операнд остатка -1, операция остатка может переполняться, если операция остатка реализуется на основе операции разделения, которая может переполняться.
Если один из операндов отрицательный, результат операции является неопределенным. Для C89 операция по модулю не стандартизирована, поэтому результат отрицательных операндов определяется реализацией.
Эти риски могут быть использованы злоумышленниками для получения доступа к вашей программе или цели в целом.
Шашка поднимает дефект, когда:
Знаменателем операции деления или операции по модулю может быть целое число с нулевым значением.
Существуют операции деления, в которых один или оба целочисленных операнда получены из небезопасного источника.
Существуют операции по модулю с одним или несколькими запятнанными операндами.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Выражения |
| Категория: Обязательно, Автоматизировано |