Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jan 2015 21:51:35 +0000 (UTC)
From:      Ryan Stone <rstone@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r277859 - in stable/10/usr.sbin: mountd rpc.lockd rpc.statd
Message-ID:  <201501282151.t0SLpZCx078177@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rstone
Date: Wed Jan 28 21:51:34 2015
New Revision: 277859
URL: https://svnweb.freebsd.org/changeset/base/277859

Log:
  MFC r277352:
  
    When mountd is creating sockets, it iterates over all addresses specified
    in the "hosts" array and eventually looks up the network address with
    getaddrinfo(). At one point it checks for a numeric address and if it
    sees one, it sets a hint parameter to force getaddrinfo to interpret the
    host as a numeric address. However that hint is not cleared for subsequent
    iterations of the loop and if any hosts seen after this point are host names,
    getaddrinfo will fail on the name.  The result of this bug is that you cannot
    pass a host name to the -h flag.
  
    Unfortunately, the first iteration will either process ::1 or 127.0.0.1,
    so the flag is set on the first iteration and all host names will fail
    to be processed.
  
    The same bug applies to rpc.lockd and rpc.statd, so fix them too.
  
    Differential Revision:        https://reviews.freebsd.org/D1507
    Reported by:  Dylan Martin
    MFC after:    1 week
    Sponsored by: Sandvine Inc.

Modified:
  stable/10/usr.sbin/mountd/mountd.c
  stable/10/usr.sbin/rpc.lockd/lockd.c
  stable/10/usr.sbin/rpc.statd/statd.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/mountd/mountd.c
==============================================================================
--- stable/10/usr.sbin/mountd/mountd.c	Wed Jan 28 21:40:22 2015	(r277858)
+++ stable/10/usr.sbin/mountd/mountd.c	Wed Jan 28 21:51:34 2015	(r277859)
@@ -627,7 +627,6 @@ create_service(struct netconfig *nconf)
 
 	/* Get mountd's address on this transport */
 	memset(&hints, 0, sizeof hints);
-	hints.ai_flags = AI_PASSIVE;
 	hints.ai_family = si.si_af;
 	hints.ai_socktype = si.si_socktype;
 	hints.ai_protocol = si.si_proto;
@@ -644,6 +643,8 @@ create_service(struct netconfig *nconf)
 		sock_fd[sock_fdcnt++] = -1;	/* Set invalid for now. */
 		mallocd_res = 0;
 
+		hints.ai_flags = AI_PASSIVE;
+
 		/*	
 		 * XXX - using RPC library internal functions.
 		 */

Modified: stable/10/usr.sbin/rpc.lockd/lockd.c
==============================================================================
--- stable/10/usr.sbin/rpc.lockd/lockd.c	Wed Jan 28 21:40:22 2015	(r277858)
+++ stable/10/usr.sbin/rpc.lockd/lockd.c	Wed Jan 28 21:51:34 2015	(r277859)
@@ -522,7 +522,6 @@ create_service(struct netconfig *nconf)
 
 	/* Get rpc.statd's address on this transport */
 	memset(&hints, 0, sizeof hints);
-	hints.ai_flags = AI_PASSIVE;
 	hints.ai_family = si.si_af;
 	hints.ai_socktype = si.si_socktype;
 	hints.ai_protocol = si.si_proto;
@@ -538,6 +537,7 @@ create_service(struct netconfig *nconf)
 			out_of_mem();
 		sock_fd[sock_fdcnt++] = -1;	/* Set invalid for now. */
 		mallocd_res = 0;
+		hints.ai_flags = AI_PASSIVE;
 
 		/*	
 		 * XXX - using RPC library internal functions.

Modified: stable/10/usr.sbin/rpc.statd/statd.c
==============================================================================
--- stable/10/usr.sbin/rpc.statd/statd.c	Wed Jan 28 21:40:22 2015	(r277858)
+++ stable/10/usr.sbin/rpc.statd/statd.c	Wed Jan 28 21:51:34 2015	(r277859)
@@ -343,7 +343,6 @@ create_service(struct netconfig *nconf)
 
 	/* Get rpc.statd's address on this transport */
 	memset(&hints, 0, sizeof hints);
-	hints.ai_flags = AI_PASSIVE;
 	hints.ai_family = si.si_af;
 	hints.ai_socktype = si.si_socktype;
 	hints.ai_protocol = si.si_proto;
@@ -359,6 +358,7 @@ create_service(struct netconfig *nconf)
 			out_of_mem();
 		sock_fd[sock_fdcnt++] = -1;	/* Set invalid for now. */
 		mallocd_res = 0;
+		hints.ai_flags = AI_PASSIVE;
 
 		/*	
 		 * XXX - using RPC library internal functions.



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