Skip to content

Commit d782d6e

Browse files
namjaejeonsmfrench
authored andcommitted
ksmbd: remove unsafe_memcpy use in session setup
Kees pointed out to just use directly ->Buffer instead of pointing ->Buffer using offset not to use unsafe_memcpy(). Suggested-by: Kees Cook <[email protected]> Signed-off-by: Namjae Jeon <[email protected]> Signed-off-by: Steve French <[email protected]>
1 parent 8bb04fb commit d782d6e

File tree

1 file changed

+3
-9
lines changed

1 file changed

+3
-9
lines changed

fs/smb/server/smb2pdu.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,8 +1335,7 @@ static int ntlm_negotiate(struct ksmbd_work *work,
13351335
return rc;
13361336

13371337
sz = le16_to_cpu(rsp->SecurityBufferOffset);
1338-
chgblob =
1339-
(struct challenge_message *)((char *)&rsp->hdr.ProtocolId + sz);
1338+
chgblob = (struct challenge_message *)rsp->Buffer;
13401339
memset(chgblob, 0, sizeof(struct challenge_message));
13411340

13421341
if (!work->conn->use_spnego) {
@@ -1369,9 +1368,7 @@ static int ntlm_negotiate(struct ksmbd_work *work,
13691368
goto out;
13701369
}
13711370

1372-
sz = le16_to_cpu(rsp->SecurityBufferOffset);
1373-
unsafe_memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, spnego_blob_len,
1374-
/* alloc is larger than blob, see smb2_allocate_rsp_buf() */);
1371+
memcpy(rsp->Buffer, spnego_blob, spnego_blob_len);
13751372
rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len);
13761373

13771374
out:
@@ -1453,10 +1450,7 @@ static int ntlm_authenticate(struct ksmbd_work *work,
14531450
if (rc)
14541451
return -ENOMEM;
14551452

1456-
sz = le16_to_cpu(rsp->SecurityBufferOffset);
1457-
unsafe_memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob,
1458-
spnego_blob_len,
1459-
/* alloc is larger than blob, see smb2_allocate_rsp_buf() */);
1453+
memcpy(rsp->Buffer, spnego_blob, spnego_blob_len);
14601454
rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len);
14611455
kfree(spnego_blob);
14621456
}

0 commit comments

Comments
 (0)