From d1c0c6ac55e9d99774df06abe975b12fa1ee5b84 Mon Sep 17 00:00:00 2001 From: fenner Date: Fri, 3 Aug 2001 16:51:53 +0000 Subject: Don't terminate the uiomove() loop on a zero-length mbuf. It's not particularly nice that IPSEC inserts a zero-length mbuf into the chain, and that bug should be fixed too, but interfaces should be robust to bad input. Print the interface name when TUNDEBUG()ing about dropping an mbuf. --- sys/net/if_tun.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'sys/net/if_tun.c') diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c index 68cef88..e67a8ad 100644 --- a/sys/net/if_tun.c +++ b/sys/net/if_tun.c @@ -669,15 +669,14 @@ tunread(dev_t dev, struct uio *uio, int flag) while (m0 && uio->uio_resid > 0 && error == 0) { len = min(uio->uio_resid, m0->m_len); - if (len == 0) - break; - error = uiomove(mtod(m0, caddr_t), len, uio); + if (len != 0) + error = uiomove(mtod(m0, caddr_t), len, uio); MFREE(m0, m); m0 = m; } if (m0) { - TUNDEBUG("Dropping mbuf\n"); + TUNDEBUG("%s%d: Dropping mbuf\n", ifp->if_name, ifp->if_unit); m_freem(m0); } return error; -- cgit v1.1