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