diff options
Diffstat (limited to 'inet/rcmd.c')
-rw-r--r-- | inet/rcmd.c | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/inet/rcmd.c b/inet/rcmd.c index ace6b14a93..8a9616f847 100644 --- a/inet/rcmd.c +++ b/inet/rcmd.c @@ -55,10 +55,6 @@ * SUCH DAMAGE. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94"; -#endif /* LIBC_SCCS and not lint */ - #include <sys/param.h> #include <sys/poll.h> #include <sys/socket.h> @@ -82,9 +78,10 @@ static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94"; #include <stdlib.h> #include <wchar.h> #include <sys/uio.h> +#include <sigsetops.h> -int __ivaliduser (FILE *, u_int32_t, const char *, const char *); +int __ivaliduser (FILE *, uint32_t, const char *, const char *); static int __validuser2_sa (FILE *, struct sockaddr *, size_t, const char *, const char *, const char *); static int ruserok2_sa (struct sockaddr *ra, size_t ralen, @@ -95,7 +92,7 @@ static int ruserok_sa (struct sockaddr *ra, size_t ralen, const char *luser); int iruserok_af (const void *raddr, int superuser, const char *ruser, const char *luser, sa_family_t af); -int iruserok (u_int32_t raddr, int superuser, const char *ruser, +int iruserok (uint32_t raddr, int superuser, const char *ruser, const char *luser); libc_hidden_proto (iruserok_af) @@ -116,7 +113,8 @@ rcmd_af (char **ahost, u_short rport, const char *locuser, const char *remuser, struct sockaddr_in6 sin6; } from; struct pollfd pfd[2]; - int32_t oldmask; + sigset_t mask, omask; + pid_t pid; int s, lport, timo, error; char c; @@ -153,7 +151,7 @@ rcmd_af (char **ahost, u_short rport, const char *locuser, const char *remuser, if (res->ai_canonname){ free (ahostbuf); - ahostbuf = strdup (res->ai_canonname); + ahostbuf = __strdup (res->ai_canonname); if (ahostbuf == NULL) { __fxprintf(NULL, "%s", _("rcmd: Cannot allocate memory\n")); @@ -164,7 +162,9 @@ rcmd_af (char **ahost, u_short rport, const char *locuser, const char *remuser, *ahost = NULL; ai = res; refused = 0; - oldmask = __sigblock(sigmask(SIGURG)); + __sigemptyset(&mask); + __sigaddset(&mask, SIGURG); + __sigprocmask (SIG_BLOCK, &mask, &omask); for (timo = 1, lport = IPPORT_RESERVED - 1;;) { char errbuf[200]; @@ -176,7 +176,7 @@ rcmd: socket: All ports in use\n")); else __fxprintf(NULL, "rcmd: socket: %m\n"); - __sigsetmask(oldmask); + __sigprocmask (SIG_SETMASK, &omask, 0); freeaddrinfo(res); return -1; } @@ -229,7 +229,7 @@ rcmd: socket: All ports in use\n")); freeaddrinfo(res); (void)__fxprintf(NULL, "%s: %s\n", *ahost, __strerror_r(errno, errbuf, sizeof (errbuf))); - __sigsetmask(oldmask); + __sigprocmask (SIG_SETMASK, &omask, 0); return -1; } lport--; @@ -341,7 +341,7 @@ socket: protocol failure in circuit setup\n")) >= 0) } goto bad2; } - __sigsetmask(oldmask); + __sigprocmask (SIG_SETMASK, &omask, 0); freeaddrinfo(res); return s; bad2: @@ -349,7 +349,7 @@ bad2: (void)__close(*fd2p); bad: (void)__close(s); - __sigsetmask(oldmask); + __sigprocmask (SIG_SETMASK, &omask, 0); freeaddrinfo(res); return -1; } @@ -387,6 +387,7 @@ rresvport_af (int *alport, sa_family_t family) __set_errno (EAFNOSUPPORT); return -1; } + /* NB: No SOCK_CLOEXEC for backwards compatibility. */ s = __socket(family, SOCK_STREAM, 0); if (s < 0) return -1; @@ -614,7 +615,7 @@ iruserok_af (const void *raddr, int superuser, const char *ruser, libc_hidden_def (iruserok_af) int -iruserok (u_int32_t raddr, int superuser, const char *ruser, const char *luser) +iruserok (uint32_t raddr, int superuser, const char *ruser, const char *luser) { return iruserok_af (&raddr, superuser, ruser, luser, AF_INET); } @@ -631,7 +632,7 @@ iruserok (u_int32_t raddr, int superuser, const char *ruser, const char *luser) * Returns 0 if ok, -1 if not ok. */ int -__ivaliduser (FILE *hostf, u_int32_t raddr, const char *luser, +__ivaliduser (FILE *hostf, uint32_t raddr, const char *luser, const char *ruser) { struct sockaddr_in ra; @@ -645,7 +646,6 @@ __ivaliduser (FILE *hostf, u_int32_t raddr, const char *luser, /* Returns 1 on positive match, 0 on no match, -1 on negative match. */ static int -internal_function __checkhost_sa (struct sockaddr *ra, size_t ralen, char *lhost, const char *rhost) { @@ -699,7 +699,6 @@ __checkhost_sa (struct sockaddr *ra, size_t ralen, char *lhost, /* Returns 1 on positive match, 0 on no match, -1 on negative match. */ static int -internal_function __icheckuser (const char *luser, const char *ruser) { /* |