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 оператор не совместим, так как нет проверки, чтобы убедиться, что вход пользователя завершен со значением null. Последующие sprintf оператор, который выводит строку, может потенциально привести к ошибке ограничения массива (переполнение буфера).

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

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