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