return auth_ntlmssp_state->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL;
}
-struct auth_serversupplied_info *auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx,
- struct auth_ntlmssp_state *auth_ntlmssp_state)
+NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx,
+ struct auth_ntlmssp_state *auth_ntlmssp_state,
+ struct auth_serversupplied_info **_server_info)
{
struct auth_serversupplied_info *server_info = auth_ntlmssp_state->server_info;
data_blob_free(&server_info->user_session_key);
auth_ntlmssp_state->ntlmssp_state->session_key.data,
auth_ntlmssp_state->ntlmssp_state->session_key.length);
if (auth_ntlmssp_state->ntlmssp_state->session_key.length && !server_info->user_session_key.data) {
- return NULL;
+ return NT_STATUS_NO_MEMORY;
}
auth_ntlmssp_state->server_info = NULL;
- return talloc_steal(mem_ctx, server_info);
+ *_server_info = talloc_steal(mem_ctx, server_info);
+ return NT_STATUS_OK;
}
struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(struct auth_ntlmssp_state *auth_ntlmssp_state)
/* The following definitions come from auth/auth_ntlmssp.c */
-struct auth_serversupplied_info *auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx,
- struct auth_ntlmssp_state *auth_ntlmssp_state);
+NTSTATUS auth_ntlmssp_server_info(TALLOC_CTX *mem_ctx,
+ struct auth_ntlmssp_state *auth_ntlmssp_state,
+ struct auth_serversupplied_info **_server_info);
struct ntlmssp_state *auth_ntlmssp_get_ntlmssp_state(struct auth_ntlmssp_state *auth_ntlmssp_state);
const char *auth_ntlmssp_get_username(struct auth_ntlmssp_state *auth_ntlmssp_state);
const char *auth_ntlmssp_get_domain(struct auth_ntlmssp_state *auth_ntlmssp_state);
TALLOC_FREE(p->server_info);
- p->server_info = auth_ntlmssp_server_info(p, a);
- if (p->server_info == NULL) {
- DEBUG(0, ("auth_ntlmssp_server_info failed to obtain the server info for authenticated user\n"));
+ status = auth_ntlmssp_server_info(p, a, &p->server_info);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(0, ("auth_ntlmssp_server_info failed to obtain the server info for authenticated user: %s\n",
+ nt_errstr(status)));
return false;
}
struct smbd_server_connection *sconn = smbd_server_conn;
if (NT_STATUS_IS_OK(nt_status)) {
- server_info = auth_ntlmssp_server_info(talloc_tos(), (*auth_ntlmssp_state));
+ nt_status = auth_ntlmssp_server_info(talloc_tos(), (*auth_ntlmssp_state), &server_info);
} else {
/* Note that this server_info won't have a session
* key. But for map to guest, that's exactly the right
uint64_t *out_session_id)
{
fstring tmp;
- session->server_info = auth_ntlmssp_server_info(session, session->auth_ntlmssp_state);
- if (!session->server_info) {
+ NTSTATUS status = auth_ntlmssp_server_info(session, session->auth_ntlmssp_state,
+ &session->server_info);
+ if (!NT_STATUS_IS_OK(status)) {
auth_ntlmssp_end(&session->auth_ntlmssp_state);
TALLOC_FREE(session);
- return NT_STATUS_NO_MEMORY;
+ return status;
}
if ((in_security_mode & SMB2_NEGOTIATE_SIGNING_REQUIRED) ||
#define DEFAULT_UNIX_CHARSET "UTF-8"
/* s3 modules */
-#define STRING_STATIC_MODULES "pdb_ldap pdb_ads pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_samr rpc_rpcecho idmap_ldap idmap_tdb idmap_passdb idmap_nss nss_info_template auth_builtin vfs_default"
+#define STRING_STATIC_MODULES "pdb_ldap pdb_ads pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_winreg rpc_initshutdown rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_samr rpc_rpcecho idmap_ldap idmap_tdb idmap_passdb idmap_nss nss_info_template auth_builtin vfs_default"
#define static_init_vfs { vfs_default_init();}
#define static_init_pdb { pdb_smbpasswd_init(); pdb_tdbsam_init(); pdb_wbc_sam_init();}
-#define static_init_rpc { rpc_lsarpc_init(); rpc_winreg_init(); rpc_initshutdown_init(); rpc_dssetup_init(); rpc_wkssvc_init(); rpc_svcctl_init(); rpc_ntsvcs_init(); rpc_netlogon_init(); rpc_netdfs_init(); rpc_srvsvc_init(); rpc_spoolss_init(); rpc_eventlog_init(); rpc_samr_init(); rpc_rpcecho_init();}
+#define static_init_rpc { rpc_winreg_init(); rpc_initshutdown_init(); rpc_wkssvc_init(); rpc_svcctl_init(); rpc_ntsvcs_init(); rpc_netdfs_init(); rpc_srvsvc_init(); rpc_spoolss_init(); rpc_eventlog_init(); rpc_rpcecho_init();}
#define static_init_auth { auth_builtin_init(); }
#define static_init_nss_info {}
#define static_init_charset {}