diff options
| author | Brian Somers <brian@FreeBSD.org> | 2000-07-20 09:05:15 +0000 | 
|---|---|---|
| committer | Brian Somers <brian@FreeBSD.org> | 2000-07-20 09:05:15 +0000 | 
| commit | 732d07e535f8ff3352c67c72c91ad3fe2859da2f (patch) | |
| tree | ed01815375dc62e9d7618a306ba25369f8d2cb3c /lib/libc/net/rcmd.c | |
| parent | 4bb78bf5109b1cea7c0324ef9de53219f643f247 (diff) | |
Notes
Diffstat (limited to 'lib/libc/net/rcmd.c')
| -rw-r--r-- | lib/libc/net/rcmd.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/libc/net/rcmd.c b/lib/libc/net/rcmd.c index 70a18d449f3f..6f076ed2ae1d 100644 --- a/lib/libc/net/rcmd.c +++ b/lib/libc/net/rcmd.c @@ -100,7 +100,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)  	int s, aport, lport, timo, error;  	char c;  	int refused; -	char num[8]; +	char num[8], *ohost;  	pid = getpid(); @@ -119,8 +119,8 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)  				strerror(errno));  		return (-1);  	} -	if (res->ai_canonname) -		*ahost = res->ai_canonname; +	ohost = *ahost; +	*ahost = strdup(res->ai_canonname ? res->ai_canonname : *ahost);  	ai = res;  	refused = 0;  	oldmask = sigblock(sigmask(SIGURG)); @@ -139,6 +139,8 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)  				    strerror(errno));  			freeaddrinfo(res);  			sigsetmask(oldmask); +			free(*ahost); +			*ahost = ohost;  			return (-1);  		}  		_fcntl(s, F_SETOWN, pid); @@ -185,6 +187,8 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)  		(void)fprintf(stderr, "%s: %s\n", *ahost, strerror(errno));  		freeaddrinfo(res);  		sigsetmask(oldmask); +		free(*ahost); +		*ahost = ohost;  		return (-1);  	}  	lport--; @@ -292,6 +296,8 @@ bad:  	(void)_close(s);  	sigsetmask(oldmask);  	freeaddrinfo(res); +	free(*ahost); +	*ahost = ohost;  	return (-1);  }  | 
