s4:auth Change 'get_challenge' API to be more like Samba3
[bbaumbach/samba-autobuild/.git] / source4 / auth / ntlmssp / ntlmssp_server.c
index a83df7377f883faa610f0b11a3037b4aaa9b5292..281ffbfa6de2642db36201676d017e0c798b37af 100644 (file)
 
 #include "includes.h"
 #include "system/network.h"
+#include "lib/tsocket/tsocket.h"
 #include "auth/ntlmssp/ntlmssp.h"
-#include "../librpc/gen_ndr/ntlmssp.h"
 #include "../libcli/auth/libcli_auth.h"
 #include "../lib/crypto/crypto.h"
 #include "auth/gensec/gensec.h"
 #include "auth/auth.h"
-#include "auth/ntlm/auth_proto.h"
 #include "param/param.h"
-#include "auth/session_proto.h"
 
 /** 
  * Set a username on an NTLMSSP context - ensures it is talloc()ed 
@@ -186,8 +184,7 @@ NTSTATUS ntlmssp_server_negotiate(struct gensec_security *gensec_security,
 
                /* Find out the DNS domain name */
                dnsdomname[0] = '\0';
-               safe_strcpy(dnsdomname, lp_realm(gensec_security->settings->lp_ctx), sizeof(dnsdomname) - 1);
-               strlower_m(dnsdomname);
+               safe_strcpy(dnsdomname, lp_dnsdomain(gensec_security->settings->lp_ctx), sizeof(dnsdomname) - 1);
 
                /* Find out the DNS host name */
                safe_strcpy(dnsname, gensec_ntlmssp_state->server_name, sizeof(dnsname) - 1);
@@ -205,11 +202,11 @@ NTSTATUS ntlmssp_server_negotiate(struct gensec_security *gensec_security,
 
                msrpc_gen(out_mem_ctx, 
                          &struct_blob, "aaaaa",
-                         NTLMSSP_NAME_TYPE_DOMAIN, target_name,
-                         NTLMSSP_NAME_TYPE_SERVER, gensec_ntlmssp_state->server_name,
-                         NTLMSSP_NAME_TYPE_DOMAIN_DNS, dnsdomname,
-                         NTLMSSP_NAME_TYPE_SERVER_DNS, dnsname,
-                         0, "");
+                         MsvAvNbDomainName, target_name,
+                         MsvAvNbComputerName, gensec_ntlmssp_state->server_name,
+                         MsvAvDnsDomainName, dnsdomname,
+                         MsvAvDnsComputerName, dnsname,
+                         MsvAvEOL, "");
        } else {
                struct_blob = data_blob(NULL, 0);
        }
@@ -603,9 +600,12 @@ NTSTATUS ntlmssp_server_auth(struct gensec_security *gensec_security,
 static const uint8_t *auth_ntlmssp_get_challenge(const struct gensec_ntlmssp_state *gensec_ntlmssp_state)
 {
        NTSTATUS status;
-       const uint8_t *chal;
+       uint8_t *chal = talloc_array(gensec_ntlmssp_state, uint8_t, 8);
+       if (!chal) {
+               return NULL;
+       }
 
-       status = gensec_ntlmssp_state->auth_context->get_challenge(gensec_ntlmssp_state->auth_context, &chal);
+       status = gensec_ntlmssp_state->auth_context->get_challenge(gensec_ntlmssp_state->auth_context, chal);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(1, ("auth_ntlmssp_get_challenge: failed to get challenge: %s\n",
                        nt_errstr(status)));
@@ -670,7 +670,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct gensec_ntlmssp_state *gensec_
        user_info->client.account_name = gensec_ntlmssp_state->user;
        user_info->client.domain_name = gensec_ntlmssp_state->domain;
        user_info->workstation_name = gensec_ntlmssp_state->workstation;
-       user_info->remote_host = gensec_get_peer_addr(gensec_ntlmssp_state->gensec_security);
+       user_info->remote_host = gensec_get_remote_address(gensec_ntlmssp_state->gensec_security);
 
        user_info->password_state = AUTH_PASSWORD_RESPONSE;
        user_info->password.response.lanman = gensec_ntlmssp_state->lm_resp;