Рассмотрите периметр анализа как доверительный контур, так что данные, поступающие из-за пределов текущего периметра анализа, считаются испорченными
-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-boundarynum и denum.
Эта опция не используется в анализе Polyspace во время You Code.