From 541826334ab9e543a530dde3aad96c2bd027f85d Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Tue, 8 Mar 2005 18:34:42 +0000 Subject: do not trash errno before using it, do not pass garbage args to getnameinfo ok henning andrushock@korovino.net --- src/lib/libc/net/rcmd.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/lib/libc/net/rcmd.c b/src/lib/libc/net/rcmd.c index 4aa3261133..96d6256760 100644 --- a/src/lib/libc/net/rcmd.c +++ b/src/lib/libc/net/rcmd.c @@ -29,7 +29,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: rcmd.c,v 1.50 2005/03/07 20:00:15 deraadt Exp $"; +static char *rcsid = "$OpenBSD: rcmd.c,v 1.51 2005/03/08 18:34:42 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -244,6 +244,14 @@ again: goto bad; } s3 = accept(s2, (struct sockaddr *)&from, &len); + if (s3 < 0) { + (void)fprintf(stderr, + "rcmd: accept: %s\n", strerror(errno)); + lport = 0; + close(s2); + goto bad; + } + /* * XXX careful for ftp bounce attacks. If discovered, shut them * down and check for the real auxiliary channel to connect. @@ -262,12 +270,7 @@ again: break; } (void)close(s2); - if (s3 < 0) { - (void)fprintf(stderr, - "rcmd: accept: %s\n", strerror(errno)); - lport = 0; - goto bad; - } + *fd2p = s3; switch (from.ss_family) { case AF_INET: -- cgit v1.2.3-55-g6feb