s3-netlogon: Fix bug #7237: _netr_SamLogon segfaults for clients sending NULL domain.
authorGünther Deschner <gd@samba.org>
Thu, 11 Mar 2010 23:30:52 +0000 (00:30 +0100)
committerGünther Deschner <gd@samba.org>
Thu, 11 Mar 2010 23:37:30 +0000 (00:37 +0100)
Thanks to Marc Muehlfeld <muehlfeld@medizinische-genetik.de>.

Guenther

source3/rpc_server/srv_netlog_nt.c

index b9bfda9a83bbbaa6c062f28a9825d088a7be2760..b41b3d10709a65b4517fb431cfde52b9ef4d9774 100644 (file)
@@ -1142,17 +1142,23 @@ static NTSTATUS _netr_LogonSamLogon_base(pipes_struct *p,
        case NetlogonServiceInformation:
        case NetlogonInteractiveTransitiveInformation:
        case NetlogonServiceTransitiveInformation:
-               nt_username     = logon->password->identity_info.account_name.string;
-               nt_domain       = logon->password->identity_info.domain_name.string;
-               nt_workstation  = logon->password->identity_info.workstation.string;
+               nt_username     = logon->password->identity_info.account_name.string ?
+                                 logon->password->identity_info.account_name.string : "";
+               nt_domain       = logon->password->identity_info.domain_name.string ?
+                                 logon->password->identity_info.domain_name.string : "";
+               nt_workstation  = logon->password->identity_info.workstation.string ?
+                                 logon->password->identity_info.workstation.string : "";
 
                DEBUG(3,("SAM Logon (Interactive). Domain:[%s].  ", lp_workgroup()));
                break;
        case NetlogonNetworkInformation:
        case NetlogonNetworkTransitiveInformation:
-               nt_username     = logon->network->identity_info.account_name.string;
-               nt_domain       = logon->network->identity_info.domain_name.string;
-               nt_workstation  = logon->network->identity_info.workstation.string;
+               nt_username     = logon->network->identity_info.account_name.string ?
+                                 logon->network->identity_info.account_name.string : "";
+               nt_domain       = logon->network->identity_info.domain_name.string ?
+                                 logon->network->identity_info.domain_name.string : "";
+               nt_workstation  = logon->network->identity_info.workstation.string ?
+                                 logon->network->identity_info.workstation.string : "";
 
                DEBUG(3,("SAM Logon (Network). Domain:[%s].  ", lp_workgroup()));
                break;