Что означает код HRESULT 0x80090301 (SEC_E_INVALID_HANDLE)?

 
Предыдущий Следующий
SEC_E_INSUFFICIENT_MEMORY SEC_E_UNSUPPORTED_FUNCTION

SEC_E_INVALID_HANDLE

Что означает SEC_E_INVALID_HANDLE

SEC_E_INVALID_HANDLE означает, что SSPI получила недействительный credential handle или security context handle. Частая причина — use-after-free, смешение двух типов SecHandle или повторное использование context после завершённого handshake.

Что проверить

  • Логируйте SSPI-функцию и происхождение handle: AcquireCredentialsHandle создаёт credential, а InitializeSecurityContext/AcceptSecurityContext работают с context.
  • Сопоставьте создание с FreeCredentialsHandle и DeleteSecurityContext.
  • Не передавайте raw handle между несвязанными connection objects без явного владения.

Как исправить

Создайте новый credential/context штатным SSPI-путём и исправьте lifetime. Смена SPN или пароля не чинит уже недействительный дескриптор.

Как подтвердить исправление

Каждый handle освобождается ровно один раз после последнего использующего его SSPI-вызова и не переживает соответствующий connection context.

Технические ссылки


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