Treat NULL and empty string as the same for credentials.
authorakallabeth <akallabeth@posteo.net>
Tue, 17 Mar 2020 10:18:54 +0000 (11:18 +0100)
committerakallabeth <akallabeth@users.noreply.github.com>
Tue, 24 Mar 2020 11:34:35 +0000 (12:34 +0100)
libfreerdp/core/nla.c

index 72a6731..9eb89e1 100644 (file)
@@ -216,6 +216,15 @@ void nla_identity_free(SEC_WINNT_AUTH_IDENTITY* identity)
  * @param credssp
  */
 
+static BOOL is_empty(const char* str)
+{
+       if (!str)
+               return TRUE;
+       if (strlen(str) == 0)
+               return TRUE;
+       return FALSE;
+}
+
 static int nla_client_init(rdpNla* nla)
 {
        char* spn;
@@ -231,13 +240,13 @@ static int nla_client_init(rdpNla* nla)
        if (settings->RestrictedAdminModeRequired)
                settings->DisableCredentialsDelegation = TRUE;
 
-       if ((!settings->Username) || (!strlen(settings->Username)) ||
-           ((!settings->Password) && (!settings->RedirectionPassword)))
+       if (is_empty(settings->Username) ||
+           (is_empty(settings->Password) && is_empty(settings->RedirectionPassword)))
        {
                PromptPassword = TRUE;
        }
 
-       if (PromptPassword && settings->Username && strlen(settings->Username))
+       if (PromptPassword && !is_empty(settings->Username))
        {
                sam = SamOpen(NULL, TRUE);
 
@@ -265,7 +274,7 @@ static int nla_client_init(rdpNla* nla)
        {
                if (settings->RestrictedAdminModeRequired)
                {
-                       if ((settings->PasswordHash) && (strlen(settings->PasswordHash) > 0))
+                       if (!is_empty(settings->PasswordHash))
                                PromptPassword = FALSE;
                }
        }