| Предыдущий | Следующий |
| STATUS_GENERIC_NOT_MAPPED | STATUS_INVALID_USER_BUFFER |
STATUS_BAD_DESCRIPTOR_FORMAT
Формат дескриптора не соответствует контракту принимающей стороны
Абсолютный дескриптор хранит указатели на структуры владельца, группы, DACL и SACL, а самодостаточный дескриптор — смещения внутри одного непрерывного буфера. Для хранения и передачи обычно используется самодостаточная форма; многие API редактирования работают с абсолютной формой. Передача одной формы там, где требуется другая, делает интерпретацию внешне допустимых полей небезопасной.
Запишите управляющие флаги и полный размер буфера, затем до преобразования проверьте каждое смещение или указатель. Дескриптор, скопированный из недоверенного буфера, также должен пройти структурную проверку; изменение только флага SE_SELF_RELATIVE не преобразует фактический формат данных.
Что проверить
- Проверьте SECURITY_DESCRIPTOR_CONTROL и флаг SE_SELF_RELATIVE.
- Проверьте расположение владельца, группы, DACL и SACL относительно границ буфера.
- Используйте документированные функции преобразования вместо ручного переключения бита формата.
Ссылки
- Microsoft: дескрипторы безопасности
- Microsoft: абсолютные и самодостаточные дескрипторы безопасности
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.