diff options
author | John Baldwin <jhb@FreeBSD.org> | 2023-08-04 23:42:41 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2023-09-06 20:03:18 +0000 |
commit | dd66ba430cb9d4c53fdd583fa2f20521552d58ff (patch) | |
tree | bf5365f826f29d8fd5c1ad9fb58b2a7325466c3e /sys | |
parent | 16f142865cb8190c733271969aa243a2fc934093 (diff) | |
download | src-dd66ba430cb9d4c53fdd583fa2f20521552d58ff.tar.gz src-dd66ba430cb9d4c53fdd583fa2f20521552d58ff.zip |
Diffstat (limited to 'sys')
-rw-r--r-- | sys/netsmb/smb_rq.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/netsmb/smb_rq.c b/sys/netsmb/smb_rq.c index 5a2ec0e7214a..c55dd1d91891 100644 --- a/sys/netsmb/smb_rq.c +++ b/sys/netsmb/smb_rq.c @@ -426,12 +426,18 @@ static int smb_t2_placedata(struct mbuf *mtop, u_int16_t offset, u_int16_t count, struct mdchain *mdp) { - struct mbuf *m, *m0; + struct mbuf *m0; int len; + len = m_length(mtop, NULL); + if (offset + count > len) + return (EPROTO); + m0 = m_split(mtop, offset, M_WAITOK); - len = m_length(m0, &m); - m->m_len -= len - count; + if (len != offset + count) { + len -= offset + count; + m_adj(m0, -len); + } if (mdp->md_top == NULL) { md_initm(mdp, m0); } else |