aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malone <dwmalone@FreeBSD.org>2000-11-19 22:22:47 +0000
committerDavid Malone <dwmalone@FreeBSD.org>2000-11-19 22:22:47 +0000
commit32af0d74f096b04ae54746f22fdc8453acceb141 (patch)
treead7f428b7395f3bdc7ce10d866d7ce11a05df058
parent09980f4348fbf533e373eea5b3823f6896390d8f (diff)
Notes
-rw-r--r--sys/kern/uipc_sockbuf.c6
-rw-r--r--sys/kern/uipc_socket2.c6
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);