]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: use session->global->session_wire_id instead of session->compat->vuid
authorRalph Boehme <slow@samba.org>
Sun, 29 Dec 2019 13:33:00 +0000 (14:33 +0100)
committerJeremy Allison <jra@samba.org>
Mon, 13 Jan 2020 19:41:34 +0000 (19:41 +0000)
session->compat->vuid is set to session->global->session_wire_id after a
successful session setup, so both variables will always carry the same value. Cf
the next commit which removes vuid from user_struct.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/files.c
source3/smbd/password.c
source3/smbd/service.c
source3/smbd/sesssetup.c
source3/smbd/smb2_glue.c
source3/smbd/smb2_server.c
source3/smbd/smb2_sesssetup.c
source3/smbd/smb2_setinfo.c
source3/smbd/smbXsrv_session.c
source3/smbd/smbXsrv_tcon.c

index 979477531705e05fa417f306c531822b9065bfde..7966a7886560777c7f2f4fb7c685f439d52cc296 100644 (file)
@@ -665,7 +665,7 @@ struct files_struct *file_fsp_get(struct smbd_smb2_request *smb2req,
                return NULL;
        }
 
-       if (smb2req->session->compat->vuid != fsp->vuid) {
+       if (smb2req->session->global->session_wire_id != fsp->vuid) {
                return NULL;
        }
 
index 284a4aba778522912be1d5ce1bb972b72b3dc1ed..41829e5793aca252f14dfa17beea6cfd194b33fe 100644 (file)
@@ -43,7 +43,7 @@ static struct user_struct *get_valid_user_struct_internal(
 
        usp=sconn->users;
        for (;usp;usp=usp->next,count++) {
-               if (vuid == usp->vuid) {
+               if (vuid == usp->session->global->session_wire_id) {
                        switch (server_allocated) {
                                case SERVER_ALLOCATED_REQUIRED_YES:
                                        if (usp->session_info == NULL) {
index a78b7cd37497282337954f73f61ada014afa7e9e..75fb71993eedefcbf5ce4a98942185981031f926 100644 (file)
@@ -615,7 +615,7 @@ static NTSTATUS make_connection_snum(struct smbXsrv_connection *xconn,
                goto err_root_exit;
        }
 
-       conn->vuid = vuser->vuid;
+       conn->vuid = session->global->session_wire_id;
 
        {
                char *s = talloc_sub_full(talloc_tos(),
index 72fbcf8f418c93329ea32190b86a8364cf54defe..5826383d5d4cd63a1967db750df71bb041357e21 100644 (file)
@@ -355,7 +355,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
 
                if (!session_claim(session)) {
                        DEBUG(1, ("smb1: Failed to claim session for vuid=%llu\n",
-                                 (unsigned long long)session->compat->vuid));
+                                 (unsigned long long)session->global->session_wire_id));
                        data_blob_free(&out_blob);
                        TALLOC_FREE(session);
                        reply_nterror(req, NT_STATUS_LOGON_FAILURE);
@@ -365,7 +365,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
                status = smbXsrv_session_update(session);
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("smb1: Failed to update session for vuid=%llu - %s\n",
-                                 (unsigned long long)session->compat->vuid,
+                                 (unsigned long long)session->global->session_wire_id,
                                  nt_errstr(status)));
                        data_blob_free(&out_blob);
                        TALLOC_FREE(session);
@@ -444,7 +444,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
                status = smbXsrv_session_update(session);
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0, ("smb1: Failed to update session for vuid=%llu - %s\n",
-                                 (unsigned long long)session->compat->vuid,
+                                 (unsigned long long)session->global->session_wire_id,
                                  nt_errstr(status)));
                        data_blob_free(&out_blob);
                        TALLOC_FREE(session);
@@ -452,7 +452,7 @@ static void reply_sesssetup_and_X_spnego(struct smb_request *req)
                        return;
                }
 
-               conn_clear_vuid_caches(sconn, session->compat->vuid);
+               conn_clear_vuid_caches(sconn, session->global->session_wire_id);
 
                /* current_user_info is changed on new vuid */
                reload_services(sconn, conn_snum_used, true);
@@ -1110,7 +1110,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
        nt_status = smbXsrv_session_update(session);
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(0, ("smb1: Failed to update session for vuid=%llu - %s\n",
-                         (unsigned long long)session->compat->vuid,
+                         (unsigned long long)session->global->session_wire_id,
                          nt_errstr(nt_status)));
                TALLOC_FREE(session);
                reply_nterror(req, nt_status_squash(nt_status));
@@ -1120,7 +1120,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
 
        if (!session_claim(session)) {
                DEBUG(1, ("smb1: Failed to claim session for vuid=%llu\n",
-                         (unsigned long long)session->compat->vuid));
+                         (unsigned long long)session->global->session_wire_id));
                TALLOC_FREE(session);
                reply_nterror(req, NT_STATUS_LOGON_FAILURE);
                END_PROFILE(SMBsesssetupX);
index ad866eca425e00b48e06e04f7e6ed2489bea270d..85f83c462054022976803b6113e810788c88058f 100644 (file)
@@ -41,7 +41,7 @@ struct smb_request *smbd_smb2_fake_smb_request(struct smbd_smb2_request *req)
        }
 
        smbreq->request_time = req->request_time;
-       smbreq->vuid = req->session->compat->vuid;
+       smbreq->vuid = req->session->global->session_wire_id;
        smbreq->tid = req->tcon->compat->cnum;
        smbreq->conn = req->tcon->compat;
        smbreq->sconn = req->sconn;
index 9cf8841d82705a14c422634327f3fa8714603174..8c66d74c8de0ca2f5256747897e45bd9fad6c9d3 100644 (file)
@@ -1882,7 +1882,10 @@ static NTSTATUS smbd_smb2_request_check_tcon(struct smbd_smb2_request *req)
                return status;
        }
 
-       if (!change_to_user_and_service(tcon->compat, req->session->compat->vuid)) {
+       if (!change_to_user_and_service(
+                   tcon->compat,
+                   req->session->global->session_wire_id))
+       {
                return NT_STATUS_ACCESS_DENIED;
        }
 
index ed426b9c09b9c4bd6eec896ece0ceb06ff2ce74f..11c0e3e8d4fd0780250438730916b1991b15c343 100644 (file)
@@ -563,7 +563,7 @@ static NTSTATUS smbd_smb2_auth_generic_return(struct smbXsrv_session *session,
        if (!session_claim(session)) {
                DEBUG(1, ("smb2: Failed to claim session "
                        "for vuid=%llu\n",
-                       (unsigned long long)session->compat->vuid));
+                       (unsigned long long)session->global->session_wire_id));
                return NT_STATUS_LOGON_FAILURE;
        }
 
@@ -571,7 +571,7 @@ static NTSTATUS smbd_smb2_auth_generic_return(struct smbXsrv_session *session,
        status = smbXsrv_session_update(session);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("smb2: Failed to update session for vuid=%llu - %s\n",
-                         (unsigned long long)session->compat->vuid,
+                         (unsigned long long)session->global->session_wire_id,
                          nt_errstr(status)));
                return NT_STATUS_LOGON_FAILURE;
        }
@@ -650,12 +650,13 @@ static NTSTATUS smbd_smb2_reauth_generic_return(struct smbXsrv_session *session,
        status = smbXsrv_session_update(session);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("smb2: Failed to update session for vuid=%llu - %s\n",
-                         (unsigned long long)session->compat->vuid,
+                         (unsigned long long)session->global->session_wire_id,
                          nt_errstr(status)));
                return NT_STATUS_LOGON_FAILURE;
        }
 
-       conn_clear_vuid_caches(xconn->client->sconn, session->compat->vuid);
+       conn_clear_vuid_caches(xconn->client->sconn,
+                              session->global->session_wire_id);
 
        *out_session_id = session->global->session_wire_id;
 
@@ -790,7 +791,7 @@ static NTSTATUS smbd_smb2_bind_auth_return(struct smbXsrv_session *session,
        status = smbXsrv_session_update(session);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("smb2: Failed to update session for vuid=%llu - %s\n",
-                         (unsigned long long)session->compat->vuid,
+                         (unsigned long long)session->global->session_wire_id,
                          nt_errstr(status)));
                return NT_STATUS_LOGON_FAILURE;
        }
index b13a08d55af99cc88aca0b78e6735638749aad3f..43dc232a6d65ab8eba4d45c5c13e843a6121a4bc 100644 (file)
@@ -308,8 +308,9 @@ static void defer_rename_done(struct tevent_req *subreq)
        /*
         * Make sure we run as the user again
         */
-       ok = change_to_user_and_service(state->smb2req->tcon->compat,
-                                       state->smb2req->session->compat->vuid);
+       ok = change_to_user_and_service(
+               state->smb2req->tcon->compat,
+               state->smb2req->session->global->session_wire_id);
        if (!ok) {
                tevent_req_nterror(state->req, NT_STATUS_ACCESS_DENIED);
                return;
index 1bed4ab22e9e8a85117726e9f65f0a541e3dd0eb..9f113cc9db68ea10148bad825d9cfe9c5fabb04a 100644 (file)
@@ -1669,7 +1669,7 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session)
                 * smbXsrv_tcon_disconnect() -> close_cnum() ->
                 * file_close_conn().
                 */
-               file_close_user(sconn, session->compat->vuid);
+               file_close_user(sconn, session->global->session_wire_id);
        }
 
        if (session->tcon_table != NULL) {
@@ -1687,7 +1687,7 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session *session)
        }
 
        if (session->compat) {
-               invalidate_vuid(sconn, session->compat->vuid);
+               invalidate_vuid(sconn, session->global->session_wire_id);
                session->compat = NULL;
        }
 
index f7f4cd2aefb206287732dfb8a6e5de4c9b04a403..d6c2bca0abca19f6f426e33b3f35f230d8388eab 100644 (file)
@@ -1168,13 +1168,7 @@ NTSTATUS smb2srv_tcon_lookup(struct smbXsrv_session *session,
 
 NTSTATUS smb2srv_tcon_disconnect_all(struct smbXsrv_session *session)
 {
-       uint64_t vuid;
-
-       if (session->compat) {
-               vuid = session->compat->vuid;
-       } else {
-               vuid = 0;
-       }
+       uint64_t vuid = session->global->session_wire_id;
 
        return smbXsrv_tcon_disconnect_all(session->tcon_table, vuid);
 }