Рассмотрите периметр анализа как доверительный контур, так что данные, поступающие из-за пределов текущего периметра анализа, считаются испорченными
-checkers tainted_data -consider-analysis-perimeter-as-trust-boundary
-checkers tainted_data -consider-analysis-perimeter-as-trust-boundary
изменяет поведение испорченных дефектов данных так, чтобы данные, исходящие из-за периметра анализа, считались испорченными. Например, если вы анализируете один файл, то любые данные, которые берутся за пределами этого файла, считаются испорченными.
По умолчанию эти данные считаются испорченными:
Объекты, объявленные или определенные как volatile
Внешние данные, такие как вход пользователя, аппаратные данные, сетевые данные и переменная окружения
См. «Источники испорченных данных».
Если вы задаете опцию -consider-analysis-perimeter-as-trust-boundary
наряду с опцией -checkers tainted_data
, данные, которые не берутся из текущих возможностей Polyspace® анализ считается испорченным. Такие данные могут включать:
Формальные параметры внешне видимой функции, которые не имеют видимого вызывающего абонента.
Возвращает значения упрямых функций.
Глобальные переменные, внешние по отношению к модулю.
Если вы не доверяете данным, исходящим из внешнего модуля, используйте эту опцию, чтобы обнаружить операции, которые уязвимы для этих испорченных данных.
Рассмотрим этот код:
#include<stdio.h> double taintedloopboundary(double num, double denum) { int count; scanf("%d", &count); for (int i=0; i<count; ++i) { num = num/denum; } return num; }
Переменная count
получен от пользователя. Если вы выполняете анализ испорченных данных по умолчанию с помощью команды:
polyspace-bug-finder -checkers tainted_data
Переменные num
и denum
не определены в текущем модуле. Если вы измените анализ испорченных данных с помощью команды:
polyspace-bug-finder -checkers tainted_data -consider-analysis-perimeter-as-trust-boundary
num
и denum
.
Эта опция не используется в анализе Polyspace во время You Code.