gensec: inline gensec_generate_session_info() into only caller
authorAndrew Bartlett <abartlet@samba.org>
Mon, 30 Jan 2012 00:53:04 +0000 (11:53 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 30 Jan 2012 07:05:14 +0000 (08:05 +0100)
This avoids casting to and from the struct auth_user_info_dc *user_info_dc

to to this, the

if (user_info_dc->info->authenticated)

is moved into auth_generate_session_info_wrapper(), which is the
function that gensec_security->auth_context->generate_session_info
points to.

Andrew Bartlett

auth/gensec/gensec.h
auth/gensec/gensec_util.c
source4/auth/ntlm/auth.c
source4/auth/ntlmssp/ntlmssp_server.c

index b03bcd82b11049141d12dae9f5cf6701bb7ff43d..c52eecb8d0b3696842eaf4125bebe629329aad9c 100644 (file)
@@ -336,11 +336,6 @@ bool gensec_setting_bool(struct gensec_settings *settings, const char *mechanism
 NTSTATUS gensec_set_target_principal(struct gensec_security *gensec_security, const char *principal);
 const char *gensec_get_target_principal(struct gensec_security *gensec_security);
 
-NTSTATUS gensec_generate_session_info(TALLOC_CTX *mem_ctx,
-                                     struct gensec_security *gensec_security,
-                                     struct auth_user_info_dc *user_info_dc,
-                                     struct auth_session_info **session_info);
-
 NTSTATUS gensec_generate_session_info_pac(TALLOC_CTX *mem_ctx,
                                          struct gensec_security *gensec_security,
                                          struct smb_krb5_context *smb_krb5_context,
index feff3c3ac1b318e196e2e8287efabe018043b5e1..cdd615fb60cb4ec21de683b4b774dcaeca59684d 100644 (file)
 #include "auth/gensec/gensec.h"
 #include "auth/common_auth.h"
 
-NTSTATUS gensec_generate_session_info(TALLOC_CTX *mem_ctx,
-                                     struct gensec_security *gensec_security,
-                                     struct auth_user_info_dc *user_info_dc,
-                                     struct auth_session_info **session_info)
-{
-       NTSTATUS nt_status;
-       uint32_t session_info_flags = 0;
-
-       if (gensec_security->want_features & GENSEC_FEATURE_UNIX_TOKEN) {
-               session_info_flags |= AUTH_SESSION_INFO_UNIX_TOKEN;
-       }
-
-       session_info_flags |= AUTH_SESSION_INFO_DEFAULT_GROUPS;
-       if (user_info_dc->info->authenticated) {
-               session_info_flags |= AUTH_SESSION_INFO_AUTHENTICATED;
-       }
-
-       if (gensec_security->auth_context && gensec_security->auth_context->generate_session_info) {
-               nt_status = gensec_security->auth_context->generate_session_info(mem_ctx, gensec_security->auth_context,
-                                                                                user_info_dc,
-                                                                                session_info_flags,
-                                                                                session_info);
-       } else {
-               DEBUG(0, ("Cannot generate a session_info without the auth_context\n"));
-               return NT_STATUS_INTERNAL_ERROR;
-       }
-       return nt_status;
-}
-
 NTSTATUS gensec_generate_session_info_pac(TALLOC_CTX *mem_ctx,
                                          struct gensec_security *gensec_security,
                                          struct smb_krb5_context *smb_krb5_context,
index a654fab0968cd78b169451f9c4a7e89ad8f6e968..6dd82e4ae89566b4013f23b015cff3f77a510828 100644 (file)
@@ -469,10 +469,16 @@ static NTSTATUS auth_generate_session_info_wrapper(TALLOC_CTX *mem_ctx,
                                                   uint32_t session_info_flags,
                                                   struct auth_session_info **session_info)
 {
+       NTSTATUS status;
        struct auth_user_info_dc *user_info_dc = talloc_get_type_abort(server_returned_info, struct auth_user_info_dc);
-       NTSTATUS status = auth_generate_session_info(mem_ctx, auth_context->lp_ctx,
-                                                    auth_context->sam_ctx, user_info_dc,
-                                                    session_info_flags, session_info);
+
+       if (user_info_dc->info->authenticated) {
+               session_info_flags |= AUTH_SESSION_INFO_AUTHENTICATED;
+       }
+
+       status = auth_generate_session_info(mem_ctx, auth_context->lp_ctx,
+                                           auth_context->sam_ctx, user_info_dc,
+                                           session_info_flags, session_info);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
index 3d66a0b689d4b3739ce579a4ce1379a6b37f2918..f463859721ce6a495c65af7c8f6ad68194798b75 100644 (file)
@@ -219,12 +219,24 @@ NTSTATUS gensec_ntlmssp_session_info(struct gensec_security *gensec_security,
        struct gensec_ntlmssp_context *gensec_ntlmssp =
                talloc_get_type_abort(gensec_security->private_data,
                                      struct gensec_ntlmssp_context);
-       struct auth_user_info_dc *user_info_dc = talloc_get_type_abort(gensec_ntlmssp->server_returned_info,
-                                                                      struct auth_user_info_dc);
-       nt_status = gensec_generate_session_info(mem_ctx,
-                                                gensec_security,
-                                                user_info_dc,
-                                                session_info);
+       uint32_t session_info_flags = 0;
+
+       if (gensec_security->want_features & GENSEC_FEATURE_UNIX_TOKEN) {
+               session_info_flags |= AUTH_SESSION_INFO_UNIX_TOKEN;
+       }
+
+       session_info_flags |= AUTH_SESSION_INFO_DEFAULT_GROUPS;
+
+       if (gensec_security->auth_context && gensec_security->auth_context->generate_session_info) {
+               nt_status = gensec_security->auth_context->generate_session_info(mem_ctx, gensec_security->auth_context,
+                                                                                gensec_ntlmssp->server_returned_info,
+                                                                                session_info_flags,
+                                                                                session_info);
+       } else {
+               DEBUG(0, ("Cannot generate a session_info without the auth_context\n"));
+               return NT_STATUS_INTERNAL_ERROR;
+       }
+       
        NT_STATUS_NOT_OK_RETURN(nt_status);
 
        return gensec_ntlmssp_session_key(gensec_security, *session_info,