What does NTSTATUS 0xC00000E7 (STATUS_BAD_DESCRIPTOR_FORMAT) mean?

 
Previous Next
STATUS_GENERIC_NOT_MAPPED STATUS_INVALID_USER_BUFFER

STATUS_BAD_DESCRIPTOR_FORMAT

The descriptor layout does not match the receiving contract

An absolute descriptor stores pointers to owner, group, DACL, and SACL structures, while a self-relative descriptor stores offsets within one contiguous buffer. Persistence and transport normally use self-relative form; many editing APIs operate on absolute form. Passing one where the other is required makes valid-looking fields unsafe to interpret.

Record the control flags and total buffer length, then validate every offset or pointer before conversion. A descriptor copied from an untrusted buffer must also pass structural validation; changing only the SE_SELF_RELATIVE flag does not convert the underlying layout.

What to inspect

  • Inspect SECURITY_DESCRIPTOR_CONTROL and the SE_SELF_RELATIVE flag.
  • Validate owner, group, DACL, and SACL locations against the buffer bounds.
  • Use documented conversion functions instead of toggling the format bit manually.

References


Looking for a different code? Search another status or error code.