Аргумент режима доступа функции в fopen или open недопустимая группа
Этот дефект возникает при использовании функций в fopen или open группа с недопустимыми или несовместимыми режимами доступа к файлам, флагами создания файлов или флагами состояния файлов в качестве аргументов. Например, для open функция, примеры действительных:
Режимы доступа включают O_RDONLY, O_WRONLY, и O_RDWR
Флаги создания файлов включают O_CREAT, O_EXCL, O_NOCTTY, и O_TRUNC.
Флаги состояния файлов включают O_APPEND, O_ASYNC, O_CLOEXEC, O_DIRECT, O_DIRECTORY, O_LARGEFILE, O_NOATIME, O_NOFOLLOW, O_NONBLOCK, O_NDELAY, O_SHLOCK, O_EXLOCK, O_FSYNC, O_SYNC и так далее.
Дефект может возникнуть в следующих ситуациях.
| Ситуация | Риск | Зафиксировать |
|---|---|---|
Вы передаете пустой или недопустимый режим доступа В соответствии со стандартом ANSI ® C допустимые режимы доступа для
|
Некоторые реализации допускают расширение режима доступа, например:
Однако строка режима доступа должна начинаться с одной из допустимых последовательностей. | Передать допустимый режим доступа в fopen. |
Вы передаете флаг состояния O_APPEND в open функция без объединения с O_WRONLY или O_RDWR. |
| Пройти либо O_APPEND|O_WRONLY или O_APPEND|O_RDWR в качестве режима доступа. |
Вы передаете флаги состояния O_APPEND и O_TRUNC вместе с open функция. |
| В зависимости от того, что вы намерены сделать, передайте один из двух режимов. |
Вы передаете флаг состояния O_ASYNC в open функция. | В определенных реализациях режим O_ASYNC не включает операции ввода-вывода, управляемые сигналом. | Используйте fcntl(pathname, F_SETFL, O_ASYNC); вместо этого. |
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Исправление может быть реализовано для любого события в последовательности. Если сведения о результатах не отображают историю событий, можно выполнить обратную трассировку, щелкнув правой кнопкой мыши параметры в исходном коде и просмотреть предыдущие связанные события. См. также раздел Интерпретация результатов поиска ошибок в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: BAD_FILE_ACCESS_MODE_STATUS |
| Воздействие: среднее |
| CWE ID: 628, 686 |