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