Skip to content

Commit dfd046d

Browse files
namjaejeonsmfrench
authored andcommitted
ksmbd: Use unsafe_memcpy() for ntlm_negotiate
rsp buffer is allocated larger than spnego_blob from smb2_allocate_rsp_buf(). Signed-off-by: Namjae Jeon <[email protected]> Signed-off-by: Steve French <[email protected]>
1 parent 47ac09b commit dfd046d

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

fs/smb/server/smb2pdu.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,7 +1370,8 @@ static int ntlm_negotiate(struct ksmbd_work *work,
13701370
}
13711371

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

13761377
out:
@@ -1453,7 +1454,9 @@ static int ntlm_authenticate(struct ksmbd_work *work,
14531454
return -ENOMEM;
14541455

14551456
sz = le16_to_cpu(rsp->SecurityBufferOffset);
1456-
memcpy((char *)&rsp->hdr.ProtocolId + sz, spnego_blob, spnego_blob_len);
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() */);
14571460
rsp->SecurityBufferLength = cpu_to_le16(spnego_blob_len);
14581461
kfree(spnego_blob);
14591462
}

0 commit comments

Comments
 (0)