Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Jun 2012 14:24:13 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r237314 - projects/pf/head/sys/contrib/pf/net
Message-ID:  <201206201424.q5KEODTh047560@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Wed Jun 20 14:24:13 2012
New Revision: 237314
URL: http://svn.freebsd.org/changeset/base/237314

Log:
  Don't leak mship in case if we specify syncpeer.

Modified:
  projects/pf/head/sys/contrib/pf/net/if_pfsync.c

Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c
==============================================================================
--- projects/pf/head/sys/contrib/pf/net/if_pfsync.c	Wed Jun 20 14:23:10 2012	(r237313)
+++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c	Wed Jun 20 14:24:13 2012	(r237314)
@@ -1323,7 +1323,7 @@ pfsyncioctl(struct ifnet *ifp, u_long cm
 		struct ip_moptions *imo = &sc->sc_imo;
 		struct ifnet *sifp;
 		struct ip *ip;
-		void *mship;
+		void *mship = NULL;
 
 		if ((error = priv_check(curthread, PRIV_NETINET_PF)) != 0)
 			return (error);
@@ -1338,8 +1338,9 @@ pfsyncioctl(struct ifnet *ifp, u_long cm
 		else if ((sifp = ifunit_ref(pfsyncr.pfsyncr_syncdev)) == NULL)
 			return (EINVAL);
 
-		mship = malloc((sizeof(struct in_multi *) *
-		    IP_MIN_MEMBERSHIPS), M_PFSYNC, M_WAITOK | M_ZERO);
+		if (pfsyncr.pfsyncr_syncpeer.s_addr == 0 && sifp != NULL)
+			mship = malloc((sizeof(struct in_multi *) *
+			    IP_MIN_MEMBERSHIPS), M_PFSYNC, M_WAITOK | M_ZERO);
 
 		PFSYNC_LOCK(sc);
 		if (pfsyncr.pfsyncr_syncpeer.s_addr == 0)
@@ -1364,7 +1365,6 @@ pfsyncioctl(struct ifnet *ifp, u_long cm
 			if (imo->imo_membership)
 				pfsync_multicast_cleanup(sc);
 			PFSYNC_UNLOCK(sc);
-			free(mship, M_PFSYNC);
 			break;
 		}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201206201424.q5KEODTh047560>