Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Jun 2016 17:17:03 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r301650 - stable/9/usr.sbin/rpcbind
Message-ID:  <201606081717.u58HH3ei024406@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Wed Jun  8 17:17:03 2016
New Revision: 301650
URL: https://svnweb.freebsd.org/changeset/base/301650

Log:
  MFstable/10 r301636:
  
  MFC r300867,r300932,r300934,r300941,r300972,r300973:
  
  r300867:
  
  Only expose `hint_uaddr` in the ND_DEBUG case
  
  This fixes a -Wunused-but-set-variable warning with gcc
  
  r300932:
  
  Catch malloc(3) errors and socket(2) errors
  
  - malloc failing will result in a delayed segfault
  - socket failing will result in delayed failures with setsockopt
  
  Exit in the event that either of these high-level conditions are met.
  
  CID: 976288, 976321, 976858
  
  r300934:
  
  Plug leak with ifp by calling freeifaddrs after calling getifaddrs
  
  Obtained from: NetBSD v1.18
  
  r300941:
  
  Don't leak res in network_init(..)
  
  Call freeaddrinfo on it after it's been used
  
  CID: 1225050
  
  r300972 (by markj):
  
  Fix rpcbind init after r300941.
  
  - getaddrinfo() sets res = NULL on failure and freeaddrinfo() always
    dereferences its argument, so we should only free the address list after
    a successful call.
  - Address a second potential leak caused by getaddrinfo(AF_INET6)
    overwriting the address list returned by getaddrinfo(AF_INET).
  
  X-MFC-With:	r300941
  
  r300973:
  
  Follow up to r300932
  
  In the event MK_INET6 != no in userspace, but is disabled in the
  kernel, or if there aren't any IPv6 addresses configured in userspace
  (for lo0 and all physical interfaces), rpcbind would terminate
  immediately instead of silently failing on
  
  Skip over the IPv6 block to its respective cleanup with freeifaddrs if
  creating the socket failed instead of terminating rpcbind immediately

Modified:
  stable/9/usr.sbin/rpcbind/util.c
Directory Properties:
  stable/9/   (props changed)
  stable/9/usr.sbin/   (props changed)

Modified: stable/9/usr.sbin/rpcbind/util.c
==============================================================================
--- stable/9/usr.sbin/rpcbind/util.c	Wed Jun  8 17:13:57 2016	(r301649)
+++ stable/9/usr.sbin/rpcbind/util.c	Wed Jun  8 17:17:03 2016	(r301650)
@@ -142,7 +142,9 @@ addrmerge(struct netbuf *caller, const c
 	struct sockaddr_storage ss;
 	struct netconfig *nconf;
 	char *caller_uaddr = NULL;
+#ifdef ND_DEBUG
 	const char *hint_uaddr = NULL;
+#endif
 	char *ret = NULL;
 	int bestif_goodness;
 
@@ -163,13 +165,17 @@ addrmerge(struct netbuf *caller, const c
 	 */
 	hint_sa = NULL;
 	if (clnt_uaddr != NULL) {
+#ifdef ND_DEBUG
 		hint_uaddr = clnt_uaddr;
+#endif
 		if ((hint_nbp = uaddr2taddr(nconf, clnt_uaddr)) == NULL)
 			goto freeit;
 		hint_sa = hint_nbp->buf;
 	}
 	if (hint_sa == NULL || hint_sa->sa_family != caller_sa->sa_family) {
+#ifdef ND_DEBUG
 		hint_uaddr = caller_uaddr;
+#endif
 		hint_sa = caller->buf;
 	}
 



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