From 76f0b8f00793864b5f15df5fcf7f8b6de7006e64 Mon Sep 17 00:00:00 2001 From: archie Date: Wed, 5 Jan 2000 20:36:07 +0000 Subject: Fix a few obscure memory leaks. --- sys/netgraph/ng_ppp.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'sys/netgraph/ng_ppp.c') diff --git a/sys/netgraph/ng_ppp.c b/sys/netgraph/ng_ppp.c index 5bd137f..146bd99 100644 --- a/sys/netgraph/ng_ppp.c +++ b/sys/netgraph/ng_ppp.c @@ -576,7 +576,7 @@ ng_ppp_rcvdata(hook_p hook, struct mbuf *m, meta_p meta) break; case HOOK_INDEX_BYPASS: if (m->m_pkthdr.len < 4) { - NG_FREE_META(meta); + NG_FREE_DATA(m, meta); return (EINVAL); } if (m->m_len < 4 && (m = m_pullup(m, 4)) == NULL) { @@ -587,8 +587,10 @@ ng_ppp_rcvdata(hook_p hook, struct mbuf *m, meta_p meta) proto = ntohs(mtod(m, u_int16_t *)[1]); m_adj(m, 4); if (linkNum >= NG_PPP_MAX_LINKS - && linkNum != NG_PPP_BUNDLE_LINKNUM) + && linkNum != NG_PPP_BUNDLE_LINKNUM) { + NG_FREE_DATA(m, meta); return (EINVAL); + } break; /* Incoming data */ @@ -789,15 +791,17 @@ ng_ppp_input(node_p node, int bypass, int linkNum, struct mbuf *m, meta_p meta) break; } - /* For unknown/inactive protocols, forward out the bypass hook */ bypass: + /* For unknown/inactive protocols, forward out the bypass hook */ if (outHook == NULL) { u_int16_t hdr[2]; hdr[0] = htons(linkNum); hdr[1] = htons((u_int16_t)proto); - if ((m = ng_ppp_prepend(m, &hdr, 4)) == NULL) + if ((m = ng_ppp_prepend(m, &hdr, 4)) == NULL) { + NG_FREE_META(meta); return (ENOBUFS); + } outHook = priv->hooks[HOOK_INDEX_BYPASS]; } @@ -823,8 +827,10 @@ ng_ppp_output(node_p node, int bypass, /* Check link status (if real) */ if (linkNum != NG_PPP_BUNDLE_LINKNUM) { - if (!bypass && !priv->conf.links[linkNum].enableLink) + if (!bypass && !priv->conf.links[linkNum].enableLink) { + NG_FREE_DATA(m, meta); return (ENXIO); + } if (priv->links[linkNum] == NULL) { NG_FREE_DATA(m, meta); return (ENETDOWN); -- cgit v1.1