exponenta event banner

MISRA C:2012 Dir 4.14

Проверяется достоверность значений, полученных из внешних источников

Описание

Определение директивы

Проверяется достоверность значений, полученных из внешних источников.

Это правило основано на MISRA C ®: 2012 Поправка 1.

Объяснение

Значения, полученные из внешних источников, могут быть недопустимыми из-за ошибок или преднамеренного изменения злоумышленниками. Перед использованием данных необходимо проверить их действительность.

Например:

  • Перед использованием внешнего ввода в качестве индекса массива необходимо проверить, может ли он привести к ошибке границ массива.

  • Прежде чем использовать переменную для управления циклом, необходимо проверить, может ли она привести к бесконечному циклу.

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

развернуть все

#include <stdio.h>

void f1(char from_user[])
{
        char input [128];
        (void) sscanf (from_user, "%128c", input);
        (void) sprintf ("%s", input);/*Noncompliant*/
}

В этом примере sscanf оператор несовместим, так как нет проверки, чтобы убедиться, что пользовательский ввод не завершен. Последующее sprintf оператор, выводящий строку, может потенциально привести к ошибке границ массива (переполнение буфера).

Проверить информацию

Группа: Дизайн кода
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2017a