Аргумент режима доступа функции в 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 не включает управляемые сигналом операции I/O. | Используйте fcntl(pathname, F_SETFL, O_ASYNC); вместо этого. |
Фиксация зависит от функции и используемых флагов. Смотрите фиксирует в приведенной выше таблице и примерах кода с мерами ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. См.:
Обратитесь к Результатам Polyspace Через Исправления ошибок или Выравнивания, если вы рассматриваете результаты в пользовательском интерфейсе Polyspace.
Обратитесь к Результатам в Polyspace доступ Через Исправления ошибок или Выравнивания, если вы рассматриваете результаты в веб-браузере.
Аннотируйте Код и Скройте Известные или Приемлемые результаты, если вы рассматриваете результаты в IDE.
Группа: Программирование |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки: BAD_FILE_ACCESS_MODE_STATUS |
Удар: Средняя |
ID CWE: 628, 686 |