From owner-svn-src-head@FreeBSD.ORG Thu Jan 24 14:29:32 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 6B2F4CB4; Thu, 24 Jan 2013 14:29:32 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 5DE8EABB; Thu, 24 Jan 2013 14:29:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r0OETWUY065848; Thu, 24 Jan 2013 14:29:32 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r0OETWAc065847; Thu, 24 Jan 2013 14:29:32 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201301241429.r0OETWAc065847@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 24 Jan 2013 14:29:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r245878 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Jan 2013 14:29:32 -0000 Author: glebius Date: Thu Jan 24 14:29:31 2013 New Revision: 245878 URL: http://svnweb.freebsd.org/changeset/base/245878 Log: - Utilize m_get2(), accidentially fixing some signedness bugs. - Return EMSGSIZE in both cases if uio_resid is oversized or undersized. - No need to clear rcvif. Modified: head/sys/net/bpf.c Modified: head/sys/net/bpf.c ============================================================================== --- head/sys/net/bpf.c Thu Jan 24 11:42:16 2013 (r245877) +++ head/sys/net/bpf.c Thu Jan 24 14:29:31 2013 (r245878) @@ -522,32 +522,15 @@ bpf_movein(struct uio *uio, int linktype } len = uio->uio_resid; - - if (len - hlen > ifp->if_mtu) + if (len < hlen || len - hlen > ifp->if_mtu) return (EMSGSIZE); - if ((unsigned)len > MJUM16BYTES) + m = m_get2(M_WAITOK, MT_DATA, M_PKTHDR, len); + if (m == NULL) return (EIO); - - if (len <= MHLEN) - MGETHDR(m, M_WAITOK, MT_DATA); - else if (len <= MCLBYTES) - m = m_getcl(M_WAITOK, MT_DATA, M_PKTHDR); - else - m = m_getjcl(M_WAITOK, MT_DATA, M_PKTHDR, -#if (MJUMPAGESIZE > MCLBYTES) - len <= MJUMPAGESIZE ? MJUMPAGESIZE : -#endif - (len <= MJUM9BYTES ? MJUM9BYTES : MJUM16BYTES)); m->m_pkthdr.len = m->m_len = len; - m->m_pkthdr.rcvif = NULL; *mp = m; - if (m->m_len < hlen) { - error = EPERM; - goto bad; - } - error = uiomove(mtod(m, u_char *), len, uio); if (error) goto bad;