diff options
author | Stefan Metzmacher <metze@samba.org> | 2020-07-08 10:15:56 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2020-07-08 15:54:40 +0000 |
commit | 36812aadbd89802b1495cb257223e0d5d2d50e9c (patch) | |
tree | 266213c51b0e0441bb186ec3bf269b7aa76ae427 | |
parent | c66110cf33758ee0da035a05585195621b60a393 (diff) | |
download | samba-36812aadbd89802b1495cb257223e0d5d2d50e9c.tar.gz |
s3:smbd: avoid dereferencing client->connections
There're typically better ways to get the same information.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11897
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
-rw-r--r-- | source3/locking/leases_util.c | 2 | ||||
-rw-r--r-- | source3/smbd/open.c | 2 | ||||
-rw-r--r-- | source3/smbd/oplock.c | 10 | ||||
-rw-r--r-- | source3/smbd/smb2_sesssetup.c | 2 |
4 files changed, 7 insertions, 9 deletions
diff --git a/source3/locking/leases_util.c b/source3/locking/leases_util.c index d307f420c7c..cb62bffbd7d 100644 --- a/source3/locking/leases_util.c +++ b/source3/locking/leases_util.c @@ -90,5 +90,5 @@ bool fsp_lease_type_is_exclusive(struct files_struct *fsp) const struct GUID *fsp_client_guid(const files_struct *fsp) { - return &fsp->conn->sconn->client->connections->smb2.client.guid; + return &fsp->conn->sconn->client->global->client_guid; } diff --git a/source3/smbd/open.c b/source3/smbd/open.c index fa3d21fe38e..79b72784249 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -5444,7 +5444,7 @@ static NTSTATUS lease_match(connection_struct *conn, state.id = vfs_file_id_from_sbuf(conn, &fname->st); } - status = leases_db_parse(&sconn->client->connections->smb2.client.guid, + status = leases_db_parse(&sconn->client->global->client_guid, lease_key, lease_match_parser, &state); if (!NT_STATUS_IS_OK(status)) { /* diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c index 97fe343a88b..a83a076152d 100644 --- a/source3/smbd/oplock.c +++ b/source3/smbd/oplock.c @@ -480,8 +480,7 @@ NTSTATUS downgrade_lease(struct smbXsrv_client *client, const struct smb2_lease_key *key, uint32_t lease_state) { - struct smbXsrv_connection *xconn = client->connections; - struct smbd_server_connection *sconn = xconn->client->sconn; + struct smbd_server_connection *sconn = client->sconn; const struct GUID *client_guid = NULL; struct share_mode_lock *lck; const struct file_id id = ids[0]; @@ -501,7 +500,7 @@ NTSTATUS downgrade_lease(struct smbXsrv_client *client, return NT_STATUS_OBJECT_NAME_NOT_FOUND; } - client_guid = &sconn->client->connections->smb2.client.guid; + client_guid = &sconn->client->global->client_guid; status = leases_db_get(client_guid, key, @@ -607,8 +606,7 @@ NTSTATUS downgrade_lease(struct smbXsrv_client *client, NTSTATUS set_status; set_status = leases_db_set( - &sconn->client->connections-> - smb2.client.guid, + &sconn->client->global->client_guid, key, current_state, breaking, @@ -626,7 +624,7 @@ NTSTATUS downgrade_lease(struct smbXsrv_client *client, } tevent_schedule_immediate(state->im, - xconn->client->raw_ev_ctx, + client->raw_ev_ctx, downgrade_lease_additional_trigger, state); diff --git a/source3/smbd/smb2_sesssetup.c b/source3/smbd/smb2_sesssetup.c index f9c8819327c..2b6b3a820d4 100644 --- a/source3/smbd/smb2_sesssetup.c +++ b/source3/smbd/smb2_sesssetup.c @@ -1436,7 +1436,7 @@ static void smbd_smb2_logoff_shutdown_done(struct tevent_req *subreq) NTSTATUS status; bool ok; const struct GUID *client_guid = - &state->smb2req->session->client->connections->smb2.client.guid; + &state->smb2req->session->client->global->client_guid; status = smb2srv_session_shutdown_recv(subreq); if (tevent_req_nterror(req, status)) { |