diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c
index fdf8e990f62c29fd93bb3db93ffa6c3ed6158848..5b1a910a3613fca707d1d425d0a568986009dde3 100644
--- a/dlls/secur32/schannel.c
+++ b/dlls/secur32/schannel.c
@@ -984,7 +984,7 @@ static SECURITY_STATUS SEC_ENTRY schan_InitializeSecurityContextW(
         SIZE_T record_size = 0;
         unsigned char *ptr;
 
-        ctx = schan_get_object(phContext->dwLower, SCHAN_HANDLE_CTX);
+        if (!(ctx = schan_get_object(phContext->dwLower, SCHAN_HANDLE_CTX))) return SEC_E_INVALID_HANDLE;
         if (pInput)
         {
             idx = schan_find_sec_buffer_idx(pInput, 0, SECBUFFER_TOKEN);