summaryrefslogtreecommitdiff
path: root/src/lib/libc/net/rcmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/net/rcmd.c')
-rw-r--r--src/lib/libc/net/rcmd.c60
1 files changed, 18 insertions, 42 deletions
diff --git a/src/lib/libc/net/rcmd.c b/src/lib/libc/net/rcmd.c
index 96d6256760..bfe8c3ae56 100644
--- a/src/lib/libc/net/rcmd.c
+++ b/src/lib/libc/net/rcmd.c
@@ -29,7 +29,7 @@
29 */ 29 */
30 30
31#if defined(LIBC_SCCS) && !defined(lint) 31#if defined(LIBC_SCCS) && !defined(lint)
32static char *rcsid = "$OpenBSD: rcmd.c,v 1.51 2005/03/08 18:34:42 deraadt Exp $"; 32static char *rcsid = "$OpenBSD: rcmd.c,v 1.52 2005/03/25 13:24:12 otto Exp $";
33#endif /* LIBC_SCCS and not lint */ 33#endif /* LIBC_SCCS and not lint */
34 34
35#include <sys/param.h> 35#include <sys/param.h>
@@ -59,22 +59,15 @@ static int __icheckhost(struct sockaddr *, socklen_t, const char *);
59static char *__gethostloop(struct sockaddr *, socklen_t); 59static char *__gethostloop(struct sockaddr *, socklen_t);
60 60
61int 61int
62rcmd(ahost, rport, locuser, remuser, cmd, fd2p) 62rcmd(char **ahost, int rport, const char *locuser, const char *remuser,
63 char **ahost; 63 const char *cmd, int *fd2p)
64 in_port_t rport;
65 const char *locuser, *remuser, *cmd;
66 int *fd2p;
67{ 64{
68 return rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, AF_INET); 65 return rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, AF_INET);
69} 66}
70 67
71int 68int
72rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af) 69rcmd_af(char **ahost, int porta, const char *locuser, const char *remuser,
73 char **ahost; 70 const char *cmd, int *fd2p, int af)
74 in_port_t rport;
75 const char *locuser, *remuser, *cmd;
76 int *fd2p;
77 int af;
78{ 71{
79 static char hbuf[MAXHOSTNAMELEN]; 72 static char hbuf[MAXHOSTNAMELEN];
80 char pbuf[NI_MAXSERV]; 73 char pbuf[NI_MAXSERV];
@@ -87,6 +80,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
87 int s, lport, timo; 80 int s, lport, timo;
88 char c, *p; 81 char c, *p;
89 int refused; 82 int refused;
83 in_port_t rport = porta;
90 84
91 /* call rcmdsh() with specified remote shell if appropriate. */ 85 /* call rcmdsh() with specified remote shell if appropriate. */
92 if (!issetugid() && (p = getenv("RSH")) && *p) { 86 if (!issetugid() && (p = getenv("RSH")) && *p) {
@@ -322,9 +316,7 @@ int __check_rhosts_file = 1;
322char *__rcmd_errstr; 316char *__rcmd_errstr;
323 317
324int 318int
325ruserok(rhost, superuser, ruser, luser) 319ruserok(const char *rhost, int superuser, const char *ruser, const char *luser)
326 const char *rhost, *ruser, *luser;
327 int superuser;
328{ 320{
329 struct addrinfo hints, *res, *r; 321 struct addrinfo hints, *res, *r;
330 int error; 322 int error;
@@ -357,10 +349,7 @@ ruserok(rhost, superuser, ruser, luser)
357 * Returns 0 if ok, -1 if not ok. 349 * Returns 0 if ok, -1 if not ok.
358 */ 350 */
359int 351int
360iruserok(raddr, superuser, ruser, luser) 352iruserok(u_int32_t raddr, int superuser, const char *ruser, const char *luser)
361 u_int32_t raddr;
362 int superuser;
363 const char *ruser, *luser;
364{ 353{
365 struct sockaddr_in sin; 354 struct sockaddr_in sin;
366 355
@@ -373,14 +362,11 @@ iruserok(raddr, superuser, ruser, luser)
373} 362}
374 363
375int 364int
376iruserok_sa(raddr, rlen, superuser, ruser, luser) 365iruserok_sa(const void *raddr, int rlen, int superuser, const char *ruser,
377 const void *raddr; 366 const char *luser)
378 int rlen;
379 int superuser;
380 const char *ruser, *luser;
381{ 367{
382 struct sockaddr *sa; 368 struct sockaddr *sa;
383 register char *cp; 369 char *cp;
384 struct stat sbuf; 370 struct stat sbuf;
385 struct passwd *pwd; 371 struct passwd *pwd;
386 FILE *hostf; 372 FILE *hostf;
@@ -450,10 +436,8 @@ again:
450 * Returns 0 if ok, -1 if not ok. 436 * Returns 0 if ok, -1 if not ok.
451 */ 437 */
452int 438int
453__ivaliduser(hostf, raddrl, luser, ruser) 439__ivaliduser(FILE *hostf, in_addr_t raddrl, const char *luser,
454 FILE *hostf; 440 const char *ruser)
455 in_addr_t raddrl;
456 const char *luser, *ruser;
457{ 441{
458 struct sockaddr_in sin; 442 struct sockaddr_in sin;
459 443
@@ -466,13 +450,10 @@ __ivaliduser(hostf, raddrl, luser, ruser)
466} 450}
467 451
468int 452int
469__ivaliduser_sa(hostf, raddr, salen, luser, ruser) 453__ivaliduser_sa(FILE *hostf, struct sockaddr *raddr, socklen_t salen,
470 FILE *hostf; 454 const char *luser, const char *ruser)
471 struct sockaddr *raddr;
472 socklen_t salen;
473 const char *luser, *ruser;
474{ 455{
475 register char *user, *p; 456 char *user, *p;
476 char *buf; 457 char *buf;
477 const char *auser, *ahost; 458 const char *auser, *ahost;
478 int hostok, userok; 459 int hostok, userok;
@@ -613,10 +594,7 @@ bail:
613 * semblance of an A->PTR->A loop, allow a simple #.#.#.# match to work. 594 * semblance of an A->PTR->A loop, allow a simple #.#.#.# match to work.
614 */ 595 */
615static int 596static int
616__icheckhost(raddr, salen, lhost) 597__icheckhost(struct sockaddr *raddr, socklen_t salen, const char *lhost)
617 struct sockaddr *raddr;
618 socklen_t salen;
619 const char *lhost;
620{ 598{
621 struct addrinfo hints, *res, *r; 599 struct addrinfo hints, *res, *r;
622 char h1[NI_MAXHOST], h2[NI_MAXHOST]; 600 char h1[NI_MAXHOST], h2[NI_MAXHOST];
@@ -662,9 +640,7 @@ __icheckhost(raddr, salen, lhost)
662 * be found, pack the result of inet_ntoa() into the string. 640 * be found, pack the result of inet_ntoa() into the string.
663 */ 641 */
664static char * 642static char *
665__gethostloop(raddr, salen) 643__gethostloop(struct sockaddr *raddr, socklen_t salen)
666 struct sockaddr *raddr;
667 socklen_t salen;
668{ 644{
669 static char remotehost[NI_MAXHOST]; 645 static char remotehost[NI_MAXHOST];
670 char h1[NI_MAXHOST], h2[NI_MAXHOST]; 646 char h1[NI_MAXHOST], h2[NI_MAXHOST];