Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Oct 2012 19:08:46 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@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: r241408 - stable/9/lib/libc/rpc
Message-ID:  <201210101908.q9AJ8kAO083859@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Wed Oct 10 19:08:46 2012
New Revision: 241408
URL: http://svn.freebsd.org/changeset/base/241408

Log:
  rpc: fix __rpc_getconfip
  
  __rpc_getconfip is supposed to return the first netconf
  entry supporting tcp or udp, respectively. The code will
  currently return the *last* entry, plus it will leak
  memory when there is more than one such entry.
  
  Tested by:		David Wolfskill
  Obtained from:		Bull GNU/linux NFSv4 Project (libtirpc)

Modified:
  stable/9/lib/libc/rpc/rpc_generic.c

Modified: stable/9/lib/libc/rpc/rpc_generic.c
==============================================================================
--- stable/9/lib/libc/rpc/rpc_generic.c	Wed Oct 10 19:07:56 2012	(r241407)
+++ stable/9/lib/libc/rpc/rpc_generic.c	Wed Oct 10 19:08:46 2012	(r241408)
@@ -269,7 +269,8 @@ __rpc_getconfip(nettype)
 		}
 		while ((nconf = getnetconfig(confighandle)) != NULL) {
 			if (strcmp(nconf->nc_protofmly, NC_INET) == 0) {
-				if (strcmp(nconf->nc_proto, NC_TCP) == 0) {
+				if (strcmp(nconf->nc_proto, NC_TCP) == 0 &&
+				    netid_tcp == NULL) {
 					netid_tcp = strdup(nconf->nc_netid);
 					if (main_thread)
 						netid_tcp_main = netid_tcp;
@@ -277,7 +278,8 @@ __rpc_getconfip(nettype)
 						thr_setspecific(tcp_key,
 							(void *) netid_tcp);
 				} else
-				if (strcmp(nconf->nc_proto, NC_UDP) == 0) {
+				if (strcmp(nconf->nc_proto, NC_UDP) == 0 &&
+				    netid_udp == NULL) {
 					netid_udp = strdup(nconf->nc_netid);
 					if (main_thread)
 						netid_udp_main = netid_udp;



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