svn commit: r241408 - stable/9/lib/libc/rpc
Pedro F. Giffuni
pfg at FreeBSD.org
Wed Oct 10 19:08:46 UTC 2012
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;
More information about the svn-src-stable-9
mailing list