Неявное масштабирование в адресной арифметике с указателями может быть проигнорировано
Этот дефект происходит, когда Polyspace® Bug Finder™ полагает, что вы игнорируете неявное масштабирование в адресной арифметике с указателями.
Например, дефект может произойти в следующих ситуациях.
Ситуация | Риск | Возможная фиксация |
---|---|---|
Вы используете sizeof оператор в арифметических операциях на указателе. |
Адресная арифметика с указателями уже неявно масштабируется размером типа данных резкой переменной. Поэтому использование | Не используйте sizeof оператор в адресной арифметике с указателями. |
Вы выполняете арифметические операции на указателе, и затем применяете бросок. | Адресная арифметика с указателями неявно масштабируется. Если вы не полагаете, что это неявное масштабирование, бросая результат адресной арифметики с указателями приводит к непреднамеренным результатам. | Примените бросок перед адресной арифметикой с указателями. |
Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Bug Finder в Пользовательском интерфейсе Рабочего стола Polyspace.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Группа: Программирование |
Язык: C | C++ |
Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода |
Синтаксис командной строки: BAD_PTR_SCALING |
Удар: Средняя |
ID CWE: 468 |