Fixed NtStatus2Tag return.
authorArmin Novak <armin.novak@thincast.com>
Fri, 23 Oct 2020 07:26:11 +0000 (09:26 +0200)
committerakallabeth <akallabeth@users.noreply.github.com>
Thu, 25 Feb 2021 08:51:41 +0000 (09:51 +0100)
(cherry picked from commit 11ca443aafc39ebc61c24f19577655e0ffcaa189)

winpr/libwinpr/nt/ntstatus.c
winpr/libwinpr/sspi/sspi.c

index 40cd634..bac8547 100644 (file)
@@ -1844,7 +1844,11 @@ const char* NtStatus2Tag(DWORD ntstatus)
 #if 1 /* Requires sorted struct */
        size_t count = ARRAYSIZE(ntstatusmap);
        size_t base = sizeof(ntstatusmap[0]);
-       return bsearch(&ntstatus, ntstatusmap, count, base, ntstatus_compare);
+       const struct ntstatus_map* found =
+           bsearch(&ntstatus, ntstatusmap, count, base, ntstatus_compare);
+       if (!found)
+               return NULL;
+       return found->tag;
 #else
        size_t x;
        for (x = 0; x < ARRAYSIZE(ntstatusmap); x++)
index 54f472b..ad47175 100644 (file)
@@ -409,7 +409,7 @@ const char* GetSecurityStatusString(SECURITY_STATUS status)
                        return "SEC_I_NO_RENEGOTIATION";
        }
 
-       return "SEC_E_UNKNOWN";
+       return NtStatus2Tag(status);
 }
 
 BOOL IsSecurityStatusError(SECURITY_STATUS status)