summaryrefslogtreecommitdiffstats
path: root/source3/smbd/smb2_server.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-07-07 09:35:40 +0000
committerVolker Lendecke <vl@samba.org>2014-07-08 17:28:11 +0200
commitb7fe8541404667e3d82e36d74c62e62cc52fc309 (patch)
treea9d27fe0e1258f5c8e9c37264c86843f8c6d58ee /source3/smbd/smb2_server.c
parent49de2e9df60143f900775ce7deb03873216ab2d0 (diff)
downloadsamba-b7fe8541404667e3d82e36d74c62e62cc52fc309.tar.gz
samba-b7fe8541404667e3d82e36d74c62e62cc52fc309.tar.xz
samba-b7fe8541404667e3d82e36d74c62e62cc52fc309.zip
smbd: Make hdr a field of its own in smbd_smb2_send_oplock_break
Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/smbd/smb2_server.c')
-rw-r--r--source3/smbd/smb2_server.c39
1 files changed, 20 insertions, 19 deletions
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c
index 82932f484c..4546d85961 100644
--- a/source3/smbd/smb2_server.c
+++ b/source3/smbd/smb2_server.c
@@ -2725,7 +2725,8 @@ struct smbd_smb2_send_oplock_break_state {
struct smbd_smb2_send_queue queue_entry;
uint8_t nbt_hdr[NBT_HDR_SIZE];
uint8_t tf[SMB2_TF_HDR_SIZE];
- uint8_t buf[SMB2_HDR_BODY + 0x18];
+ uint8_t hdr[SMB2_HDR_BODY];
+ uint8_t buf[0x18];
struct iovec vector[1+SMBD_SMB2_NUM_IOV_PER_REQ];
};
@@ -2737,7 +2738,6 @@ NTSTATUS smbd_smb2_send_oplock_break(struct smbd_server_connection *sconn,
{
struct smbd_smb2_send_oplock_break_state *state;
struct smbXsrv_connection *conn = sconn->conn;
- uint8_t *hdr;
uint8_t *body;
size_t body_len;
uint8_t *dyn;
@@ -2757,8 +2757,7 @@ NTSTATUS smbd_smb2_send_oplock_break(struct smbd_server_connection *sconn,
}
state->sconn = sconn;
- hdr = state->buf;
- body = hdr + SMB2_HDR_BODY;
+ body = state->buf;
body_len = 0x18;
dyn = body + body_len;
dyn_len = 0;
@@ -2779,19 +2778,19 @@ NTSTATUS smbd_smb2_send_oplock_break(struct smbd_server_connection *sconn,
SBVAL(state->tf, SMB2_TF_NONCE+8, nonce_high);
SBVAL(state->tf, SMB2_TF_SESSION_ID, session->global->session_wire_id);
- SIVAL(hdr, 0, SMB2_MAGIC);
- SSVAL(hdr, SMB2_HDR_LENGTH, SMB2_HDR_BODY);
- SSVAL(hdr, SMB2_HDR_EPOCH, 0);
- SIVAL(hdr, SMB2_HDR_STATUS, 0);
- SSVAL(hdr, SMB2_HDR_OPCODE, SMB2_OP_BREAK);
- SSVAL(hdr, SMB2_HDR_CREDIT, 0);
- SIVAL(hdr, SMB2_HDR_FLAGS, SMB2_HDR_FLAG_REDIRECT);
- SIVAL(hdr, SMB2_HDR_NEXT_COMMAND, 0);
- SBVAL(hdr, SMB2_HDR_MESSAGE_ID, UINT64_MAX);
- SIVAL(hdr, SMB2_HDR_PID, 0);
- SIVAL(hdr, SMB2_HDR_TID, 0);
- SBVAL(hdr, SMB2_HDR_SESSION_ID, 0);
- memset(hdr+SMB2_HDR_SIGNATURE, 0, 16);
+ SIVAL(state->hdr, 0, SMB2_MAGIC);
+ SSVAL(state->hdr, SMB2_HDR_LENGTH, SMB2_HDR_BODY);
+ SSVAL(state->hdr, SMB2_HDR_EPOCH, 0);
+ SIVAL(state->hdr, SMB2_HDR_STATUS, 0);
+ SSVAL(state->hdr, SMB2_HDR_OPCODE, SMB2_OP_BREAK);
+ SSVAL(state->hdr, SMB2_HDR_CREDIT, 0);
+ SIVAL(state->hdr, SMB2_HDR_FLAGS, SMB2_HDR_FLAG_REDIRECT);
+ SIVAL(state->hdr, SMB2_HDR_NEXT_COMMAND, 0);
+ SBVAL(state->hdr, SMB2_HDR_MESSAGE_ID, UINT64_MAX);
+ SIVAL(state->hdr, SMB2_HDR_PID, 0);
+ SIVAL(state->hdr, SMB2_HDR_TID, 0);
+ SBVAL(state->hdr, SMB2_HDR_SESSION_ID, 0);
+ memset(state->hdr+SMB2_HDR_SIGNATURE, 0, 16);
SSVAL(body, 0x00, body_len);
@@ -2818,8 +2817,10 @@ NTSTATUS smbd_smb2_send_oplock_break(struct smbd_server_connection *sconn,
};
}
- state->vector[1+SMBD_SMB2_HDR_IOV_OFS].iov_base = hdr;
- state->vector[1+SMBD_SMB2_HDR_IOV_OFS].iov_len = SMB2_HDR_BODY;
+ state->vector[1+SMBD_SMB2_HDR_IOV_OFS] = (struct iovec) {
+ .iov_base = state->hdr,
+ .iov_len = sizeof(state->hdr)
+ };
state->vector[1+SMBD_SMB2_BODY_IOV_OFS].iov_base = body;
state->vector[1+SMBD_SMB2_BODY_IOV_OFS].iov_len = body_len;