summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2020-07-08 10:15:56 +0200
committerStefan Metzmacher <metze@samba.org>2020-07-08 15:54:40 +0000
commit36812aadbd89802b1495cb257223e0d5d2d50e9c (patch)
tree266213c51b0e0441bb186ec3bf269b7aa76ae427
parentc66110cf33758ee0da035a05585195621b60a393 (diff)
downloadsamba-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.c2
-rw-r--r--source3/smbd/open.c2
-rw-r--r--source3/smbd/oplock.c10
-rw-r--r--source3/smbd/smb2_sesssetup.c2
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)) {