Аргумент функции в режиме доступа в 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 . |
The | Пройдите или O_APPEND|O_WRONLY или O_APPEND|O_RDWR как режим доступа. |
Вы передаете флаги состояния O_APPEND и O_TRUNC вместе с open функция. |
The | В зависимости от того, что вы намерены сделать, передайте один из двух режимов. |
Вы передаете флаг состояния O_ASYNC на open функция. | В некоторых реализациях режим O_ASYNC не включает операции ввода-вывода, управляемые сигналом. | Используйте fcntl(pathname, F_SETFL, O_ASYNC); вместо этого. |
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Вы можете реализовать исправление на любом событии в последовательности. Если сведения о результате не отображают историю событий, можно отследить их с помощью опций правого щелчка в исходном коде и просмотреть предыдущие связанные события. Смотрите также Результаты интерпретации Bug Finder в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Программирование |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки: BAD_FILE_ACCESS_MODE_STATUS |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE: 628, 686 |