Что означает код NTSTATUS 0xC00000E7 (STATUS_BAD_DESCRIPTOR_FORMAT)?

 
Предыдущий Следующий
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 относительно границ буфера.
  • Используйте документированные функции преобразования вместо ручного переключения бита формата.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.