exponenta event banner

-считать-анализ-периметр-как-доверительная граница

Считать периметр анализа границей доверия, чтобы данные, поступающие из-за пределов текущего периметра анализа, считались запятнанными

Синтаксис

-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
    Polyspace помечает запятнанную переменную цикла.

  • Переменные num и denum не определены в текущем модуле. При изменении анализа запятнанных данных с помощью команды:

    polyspace-bug-finder -checkers tainted_data -consider-analysis-perimeter-as-trust-boundary
    Polyspace помечает операцию разделения между num и denum.

Совет

Этот параметр неприменим в анализе Polyspace as You Code.

Представлен в R2020b