MISRA C:2012 Dir 4.14

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

Описание

Направляющее определение

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

Это правило прибывает из MISRA C®: 2 012 Поправок 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 оператор, который выводит строку, может потенциально привести к ошибке границ массивов (переполнение буфера).

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

Группа: проект Кода
Категория: необходимый
Категория AGC: необходимый
Введенный в R2017a