diff options
| author | David Malone <dwmalone@FreeBSD.org> | 2000-11-19 22:22:47 +0000 |
|---|---|---|
| committer | David Malone <dwmalone@FreeBSD.org> | 2000-11-19 22:22:47 +0000 |
| commit | 32af0d74f096b04ae54746f22fdc8453acceb141 (patch) | |
| tree | ad7f428b7395f3bdc7ce10d866d7ce11a05df058 | |
| parent | 09980f4348fbf533e373eea5b3823f6896390d8f (diff) | |
Notes
| -rw-r--r-- | sys/kern/uipc_sockbuf.c | 6 | ||||
| -rw-r--r-- | sys/kern/uipc_socket2.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index 4ed67e59d53d..5da42b0fe65c 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -718,8 +718,10 @@ sbcompress(sb, m, n) m = m_free(m); continue; } - if (n && (n->m_flags & (M_EXT | M_EOR)) == 0 && - (n->m_data + n->m_len + m->m_len) < &n->m_dat[MLEN] && + if (n && (n->m_flags & M_EOR) == 0 && + M_WRITABLE(n) && + m->m_len <= MCLBYTES / 4 && /* XXX: Don't copy too much */ + m->m_len <= M_TRAILINGSPACE(n) && n->m_type == m->m_type) { bcopy(mtod(m, caddr_t), mtod(n, caddr_t) + n->m_len, (unsigned)m->m_len); diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index 4ed67e59d53d..5da42b0fe65c 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -718,8 +718,10 @@ sbcompress(sb, m, n) m = m_free(m); continue; } - if (n && (n->m_flags & (M_EXT | M_EOR)) == 0 && - (n->m_data + n->m_len + m->m_len) < &n->m_dat[MLEN] && + if (n && (n->m_flags & M_EOR) == 0 && + M_WRITABLE(n) && + m->m_len <= MCLBYTES / 4 && /* XXX: Don't copy too much */ + m->m_len <= M_TRAILINGSPACE(n) && n->m_type == m->m_type) { bcopy(mtod(m, caddr_t), mtod(n, caddr_t) + n->m_len, (unsigned)m->m_len); |
