]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: RIP user_struct
authorRalph Boehme <slow@samba.org>
Mon, 6 Jan 2020 09:14:11 +0000 (10:14 +0100)
committerJeremy Allison <jra@samba.org>
Mon, 13 Jan 2020 21:09:01 +0000 (21:09 +0000)
At last, the nail in the coffin. :)

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Mon Jan 13 21:09:01 UTC 2020 on sn-devel-184

source3/librpc/idl/smbXsrv.idl
source3/smbd/files.c
source3/smbd/globals.h
source3/smbd/password.c
source3/smbd/proto.h
source3/smbd/sesssetup.c
source3/smbd/smb2_sesssetup.c
source3/smbd/smbXsrv_session.c

index 9fdfc97db0eb378affa3d6fa51ed4c93f40f0358..c6ce9c4878963d65e74fa607219d1208326ebde6 100644 (file)
@@ -290,7 +290,6 @@ interface smbXsrv
                hyper                                   nonce_high_max;
                hyper                                   nonce_high;
                hyper                                   nonce_low;
-               [ignore] user_struct                    *compat;
                [ignore] smbXsrv_tcon_table             *tcon_table;
                [ignore] uint32                         homes_snum;
                smbXsrv_session_auth0                   *pending_auth;
index 7966a7886560777c7f2f4fb7c685f439d52cc296..99b2f343685469d2eee1637e2877406f68c07a21 100644 (file)
@@ -661,10 +661,6 @@ struct files_struct *file_fsp_get(struct smbd_smb2_request *smb2req,
                return NULL;
        }
 
-       if (smb2req->session->compat == NULL) {
-               return NULL;
-       }
-
        if (smb2req->session->global->session_wire_id != fsp->vuid) {
                return NULL;
        }
index 72edd28b68c19f0337c7b0badd16f7bc03350031..7b26d04ed0f192d85e7c6112bec84a9b6741606f 100644 (file)
@@ -840,19 +840,10 @@ struct smbd_smb2_request {
 };
 
 struct smbd_server_connection;
-struct user_struct;
 
 struct pending_message_list;
 struct pending_auth_data;
 
-struct user_struct {
-       struct user_struct *next, *prev;
-
-       struct auth_session_info *session_info;
-
-       struct smbXsrv_session *session;
-};
-
 struct pthreadpool_tevent;
 
 struct smbd_server_connection {
@@ -866,7 +857,6 @@ struct smbd_server_connection {
        int trans_num;
 
        size_t num_users;
-       struct user_struct *users;
 
        size_t num_connections;
        struct connection_struct *connections;
index 4b14e6f12f113a735959a409efca03150a73818c..9709a51a10922819b6a4ddeeb36479f7b862c0bc 100644 (file)
 #include "auth.h"
 #include "../libcli/security/security.h"
 
-/****************************************************************************
- Check if a uid has been validated, and return an pointer to the user_struct
- if it has. NULL if not. vuid is biased by an offset. This allows us to
- tell random client vuid's (normally zero) from valid vuids.
-****************************************************************************/
-
-struct user_struct *get_valid_user_struct(struct smbd_server_connection *sconn,
-                                         uint64_t vuid)
-{
-       struct user_struct *usp;
-       int count=0;
-
-       if (vuid == UID_FIELD_INVALID)
-               return NULL;
-
-       usp=sconn->users;
-       for (;usp;usp=usp->next,count++) {
-               if (vuid == usp->session->global->session_wire_id) {
-                       if (count > 10) {
-                               DLIST_PROMOTE(sconn->users, usp);
-                       }
-                       return usp;
-               }
-       }
-
-       return NULL;
-}
-
 /****************************************************************************
  Invalidate a uid.
 ****************************************************************************/
 
 void invalidate_vuid(struct smbd_server_connection *sconn, uint64_t vuid)
 {
-       struct user_struct *vuser = NULL;
        struct smbXsrv_session *session = NULL;
        NTSTATUS status;
 
-       vuser = get_valid_user_struct(sconn, vuid);
-       if (vuser == NULL) {
-               return;
-       }
-
        status = get_valid_smbXsrv_session(sconn->client, vuid, &session);
        if (!NT_STATUS_IS_OK(status)) {
                return;
@@ -76,15 +42,12 @@ void invalidate_vuid(struct smbd_server_connection *sconn, uint64_t vuid)
 
        session_yield(session);
 
-       DLIST_REMOVE(sconn->users, vuser);
        SMB_ASSERT(sconn->num_users > 0);
        sconn->num_users--;
 
        /* clear the vuid from the 'cache' on each connection, and
           from the vuid 'owner' of connections */
        conn_clear_vuid_caches(sconn, vuid);
-
-       TALLOC_FREE(vuser);
 }
 
 int register_homes_share(const char *username)
index a8e2393f264093945f7e84249a0430c93916da43..4b1960b0c14004b1b3afaf1a9a8e1ecdfb1e3191 100644 (file)
@@ -754,8 +754,6 @@ struct kernel_oplocks *linux_init_kernel_oplocks(struct smbd_server_connection *
 
 /* The following definitions come from smbd/password.c  */
 
-struct user_struct *get_valid_user_struct(struct smbd_server_connection *sconn,
-                                         uint64_t vuid);
 void invalidate_vuid(struct smbd_server_connection *sconn, uint64_t vuid);
 int register_homes_share(const char *username);
 
index 94d1ac1e047cf4714fae2b48fc2eb82bda56d84b..8efed438a52fe3648a93a9d91b5f85a5ab94982e 100644 (file)
@@ -302,16 +302,6 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
                        data_blob_clear_free(&session_info->session_key);
                }
 
-               session->compat = talloc_zero(session, struct user_struct);
-               if (session->compat == NULL) {
-                       data_blob_free(&out_blob);
-                       TALLOC_FREE(session);
-                       reply_nterror(req, NT_STATUS_NO_MEMORY);
-                       return;
-               }
-               session->compat->session = session;
-               session->compat->session_info = session_info;
-               DLIST_ADD(sconn->users, session->compat);
                sconn->num_users++;
 
                if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
@@ -412,8 +402,6 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
                talloc_steal(session_info, session_info->session_key.data);
                TALLOC_FREE(session->global->auth_session_info);
 
-               session->compat->session_info = session_info;
-
                if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
                        session->homes_snum =
                                register_homes_share(session_info->unix_info->unix_name);
@@ -1059,16 +1047,6 @@ void reply_sesssetup_and_X(struct smb_request *req)
                }
        }
 
-       session->compat = talloc_zero(session, struct user_struct);
-       if (session->compat == NULL) {
-               TALLOC_FREE(session);
-               reply_nterror(req, NT_STATUS_NO_MEMORY);
-               END_PROFILE(SMBsesssetupX);
-               return;
-       }
-       session->compat->session = session;
-       session->compat->session_info = session_info;
-       DLIST_ADD(sconn->users, session->compat);
        sconn->num_users++;
 
        if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
index e7e9df031f6d25f415d5b7bc1949c5fe436b01dd..3fa1a15910ed17d0cf1bdbab329b3ebedbb216d0 100644 (file)
@@ -525,13 +525,6 @@ static NTSTATUS smbd_smb2_auth_generic_return(struct smbXsrv_session *session,
        }
        talloc_keep_secret(session_info->session_key.data);
 
-       session->compat = talloc_zero(session, struct user_struct);
-       if (session->compat == NULL) {
-               return NT_STATUS_NO_MEMORY;
-       }
-       session->compat->session = session;
-       session->compat->session_info = session_info;
-       DLIST_ADD(smb2req->sconn->users, session->compat);
        smb2req->sconn->num_users++;
 
        if (security_session_user_level(session_info, NULL) >= SECURITY_USER) {
@@ -614,8 +607,6 @@ static NTSTATUS smbd_smb2_reauth_generic_return(struct smbXsrv_session *session,
        }
        talloc_keep_secret(session_info->session_key.data);
 
-       session->compat->session_info = session_info;
-
        session->homes_snum =
                        register_homes_share(session_info->unix_info->unix_name);
 
index 77c285d741b896196c86b894f4957631261ff295..ba542702213086e43dd5d60008bfdedda37baf46 100644 (file)
@@ -1685,7 +1685,6 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session)
        }
 
        invalidate_vuid(sconn, session->global->session_wire_id);
-       session->compat = NULL;
 
        global_rec = session->global->db_rec;
        session->global->db_rec = NULL;