s3-auth use auth_user_info not netr_SamInfo3 in auth3_session_info
[ira/wip.git] / source3 / smbd / service.c
index 5c410be02a68e47443d874298d8edac80bfff23f..2ac462f93001d15a98f0cf0ceaf05a25554fd865 100644 (file)
@@ -373,28 +373,28 @@ static NTSTATUS find_forced_group(bool force_user,
 }
 
 /****************************************************************************
-  Create an auth_serversupplied_info structure for a connection_struct
+  Create an auth3_session_info structure for a connection_struct
 ****************************************************************************/
 
 static NTSTATUS create_connection_session_info(struct smbd_server_connection *sconn,
                                              TALLOC_CTX *mem_ctx, int snum,
-                                              struct auth_serversupplied_info *vuid_serverinfo,
+                                              struct auth3_session_info *vuid_serverinfo,
                                              DATA_BLOB password,
-                                              struct auth_serversupplied_info **presult)
+                                              struct auth3_session_info **presult)
 {
         if (lp_guest_only(snum)) {
-                return make_server_info_guest(mem_ctx, presult);
+                return make_session_info_guest(mem_ctx, presult);
         }
 
         if (vuid_serverinfo != NULL) {
 
-               struct auth_serversupplied_info *result;
+               struct auth3_session_info *result;
 
                 /*
                  * This is the normal security != share case where we have a
                  * valid vuid from the session setup.                 */
 
-                if (vuid_serverinfo->guest) {
+                if (vuid_serverinfo->unix_info->guest) {
                         if (!lp_guest_ok(snum)) {
                                 DEBUG(2, ("guest user (from session setup) "
                                           "not permitted to access this share "
@@ -402,19 +402,19 @@ static NTSTATUS create_connection_session_info(struct smbd_server_connection *sc
                                 return NT_STATUS_ACCESS_DENIED;
                         }
                 } else {
-                        if (!user_ok_token(vuid_serverinfo->unix_name,
-                                          vuid_serverinfo->info3->base.domain.string,
+                        if (!user_ok_token(vuid_serverinfo->unix_info->unix_name,
+                                          vuid_serverinfo->info->domain_name,
                                            vuid_serverinfo->security_token, snum)) {
                                 DEBUG(2, ("user '%s' (from session setup) not "
                                           "permitted to access this share "
                                           "(%s)\n",
-                                          vuid_serverinfo->unix_name,
+                                          vuid_serverinfo->unix_info->unix_name,
                                           lp_servicename(snum)));
                                 return NT_STATUS_ACCESS_DENIED;
                         }
                 }
 
-                result = copy_serverinfo(mem_ctx, vuid_serverinfo);
+                result = copy_session_info(mem_ctx, vuid_serverinfo);
                if (result == NULL) {
                        return NT_STATUS_NO_MEMORY;
                }
@@ -466,7 +466,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
                 */
 
                char *fuser;
-               struct auth_serversupplied_info *forced_serverinfo;
+               struct auth3_session_info *forced_serverinfo;
 
                fuser = talloc_string_sub(conn, lp_force_user(snum), "%S",
                                          lp_const_servicename(snum));
@@ -475,7 +475,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
                }
 
                status = make_session_info_from_username(
-                       conn, fuser, conn->session_info->guest,
+                       conn, fuser, conn->session_info->unix_info->guest,
                        &forced_serverinfo);
                if (!NT_STATUS_IS_OK(status)) {
                        return status;
@@ -496,9 +496,9 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
        if (*lp_force_group(snum)) {
 
                status = find_forced_group(
-                       conn->force_user, snum, conn->session_info->unix_name,
+                       conn->force_user, snum, conn->session_info->unix_info->unix_name,
                        &conn->session_info->security_token->sids[1],
-                       &conn->session_info->utok.gid);
+                       &conn->session_info->unix_token->gid);
 
                if (!NT_STATUS_IS_OK(status)) {
                        return status;
@@ -510,7 +510,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
                 * struct. We only use conn->session_info directly if
                 * "force_user" was set.
                 */
-               conn->force_group_gid = conn->session_info->utok.gid;
+               conn->force_group_gid = conn->session_info->unix_token->gid;
        }
 
        return NT_STATUS_OK;
@@ -571,7 +571,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
                conn->force_user = true;
        }
 
-       add_session_user(sconn, conn->session_info->unix_name);
+       add_session_user(sconn, conn->session_info->unix_info->unix_name);
 
        conn->num_files_open = 0;
        conn->lastused = conn->lastused_count = time(NULL);
@@ -613,11 +613,11 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
        {
                char *s = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)),
-                                       conn->session_info->unix_name,
+                                       conn->session_info->unix_info->unix_name,
                                        conn->connectpath,
-                                       conn->session_info->utok.gid,
-                                       conn->session_info->sanitized_username,
-                                       conn->session_info->info3->base.domain.string,
+                                       conn->session_info->unix_token->gid,
+                                       conn->session_info->unix_info->sanitized_username,
+                                       conn->session_info->info->domain_name,
                                        lp_pathname(snum));
                if (!s) {
                        *pstatus = NT_STATUS_NO_MEMORY;
@@ -700,7 +700,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
           filesystem operation that we do. */
 
        if (SMB_VFS_CONNECT(conn, lp_servicename(snum),
-                           conn->session_info->unix_name) < 0) {
+                           conn->session_info->unix_info->unix_name) < 0) {
                DEBUG(0,("make_connection: VFS make connection failed!\n"));
                *pstatus = NT_STATUS_UNSUCCESSFUL;
                goto err_root_exit;
@@ -735,11 +735,11 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
        if (*lp_rootpreexec(snum)) {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)),
-                                       conn->session_info->unix_name,
+                                       conn->session_info->unix_info->unix_name,
                                        conn->connectpath,
-                                       conn->session_info->utok.gid,
-                                       conn->session_info->sanitized_username,
-                                       conn->session_info->info3->base.domain.string,
+                                       conn->session_info->unix_token->gid,
+                                       conn->session_info->unix_info->sanitized_username,
+                                       conn->session_info->info->domain_name,
                                        lp_rootpreexec(snum));
                DEBUG(5,("cmd=%s\n",cmd));
                ret = smbrun(cmd,NULL);
@@ -773,11 +773,11 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
        if (*lp_preexec(snum)) {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)),
-                                       conn->session_info->unix_name,
+                                       conn->session_info->unix_info->unix_name,
                                        conn->connectpath,
-                                       conn->session_info->utok.gid,
-                                       conn->session_info->sanitized_username,
-                                       conn->session_info->info3->base.domain.string,
+                                       conn->session_info->unix_token->gid,
+                                       conn->session_info->unix_info->sanitized_username,
+                                       conn->session_info->info->domain_name,
                                        lp_preexec(snum));
                ret = smbrun(cmd,NULL);
                TALLOC_FREE(cmd);
@@ -881,7 +881,7 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
                dbgtext( "%s", srv_is_signing_active(sconn) ? "signed " : "");
                dbgtext( "connect to service %s ", lp_servicename(snum) );
                dbgtext( "initially as user %s ",
-                        conn->session_info->unix_name );
+                        conn->session_info->unix_info->unix_name );
                dbgtext( "(uid=%d, gid=%d) ", (int)effuid, (int)effgid );
                dbgtext( "(pid %d)\n", (int)sys_getpid() );
        }
@@ -1093,11 +1093,11 @@ void close_cnum(connection_struct *conn, uint16 vuid)
            change_to_user(conn, vuid))  {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)),
-                                       conn->session_info->unix_name,
+                                       conn->session_info->unix_info->unix_name,
                                        conn->connectpath,
-                                       conn->session_info->utok.gid,
-                                       conn->session_info->sanitized_username,
-                                       conn->session_info->info3->base.domain.string,
+                                       conn->session_info->unix_token->gid,
+                                       conn->session_info->unix_info->sanitized_username,
+                                       conn->session_info->info->domain_name,
                                        lp_postexec(SNUM(conn)));
                smbrun(cmd,NULL);
                TALLOC_FREE(cmd);
@@ -1109,11 +1109,11 @@ void close_cnum(connection_struct *conn, uint16 vuid)
        if (*lp_rootpostexec(SNUM(conn)))  {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)),
-                                       conn->session_info->unix_name,
+                                       conn->session_info->unix_info->unix_name,
                                        conn->connectpath,
-                                       conn->session_info->utok.gid,
-                                       conn->session_info->sanitized_username,
-                                       conn->session_info->info3->base.domain.string,
+                                       conn->session_info->unix_token->gid,
+                                       conn->session_info->unix_info->sanitized_username,
+                                       conn->session_info->info->domain_name,
                                        lp_rootpostexec(SNUM(conn)));
                smbrun(cmd,NULL);
                TALLOC_FREE(cmd);