Module Name: src Committed By: maxv Date: Mon Mar 5 12:42:28 UTC 2018
Modified Files: src/sys/netipsec: ipsec_mbuf.c Log Message: Improve stupid check, style, and fix leak (m, not m0). To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/netipsec/ipsec_mbuf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netipsec/ipsec_mbuf.c diff -u src/sys/netipsec/ipsec_mbuf.c:1.20 src/sys/netipsec/ipsec_mbuf.c:1.21 --- src/sys/netipsec/ipsec_mbuf.c:1.20 Mon Feb 26 06:17:01 2018 +++ src/sys/netipsec/ipsec_mbuf.c Mon Mar 5 12:42:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec_mbuf.c,v 1.20 2018/02/26 06:17:01 maxv Exp $ */ +/* $NetBSD: ipsec_mbuf.c,v 1.21 2018/03/05 12:42:28 maxv Exp $ */ /* * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.20 2018/02/26 06:17:01 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.21 2018/03/05 12:42:28 maxv Exp $"); /* * IPsec-specific mbuf routines. @@ -317,10 +317,8 @@ m_pad(struct mbuf *m, int n) register int len, pad; void *retval; - if (n <= 0) { /* No stupid arguments. */ - IPSECLOG(LOG_DEBUG, "pad length invalid (%d)\n", n); - m_freem(m); - return NULL; + if (__predict_false(n > MLEN)) { + panic("%s: %d > MLEN", __func__, n); } len = m->m_pkthdr.len; @@ -329,7 +327,7 @@ m_pad(struct mbuf *m, int n) while (m0->m_len < len) { KASSERTMSG(m0->m_next != NULL, - "m0 null, len %u m_len %u", len, m0->m_len);/*XXX*/ + "m0 null, len %u m_len %u", len, m0->m_len); len -= m0->m_len; m0 = m0->m_next; } @@ -338,7 +336,6 @@ m_pad(struct mbuf *m, int n) IPSECLOG(LOG_DEBUG, "length mismatch (should be %d instead of %d)\n", m->m_pkthdr.len, m->m_pkthdr.len + m0->m_len - len); - m_freem(m); return NULL; } @@ -350,7 +347,6 @@ m_pad(struct mbuf *m, int n) "length mismatch (should be %d instead of %d)\n", m->m_pkthdr.len, m->m_pkthdr.len + m1->m_next->m_len); - m_freem(m); return NULL; } @@ -361,8 +357,8 @@ m_pad(struct mbuf *m, int n) if (pad > M_TRAILINGSPACE(m0)) { /* Add an mbuf to the chain. */ MGET(m1, M_DONTWAIT, MT_DATA); - if (m1 == 0) { - m_freem(m0); + if (m1 == NULL) { + m_freem(m); IPSECLOG(LOG_DEBUG, "unable to get extra mbuf\n"); return NULL; }