diff options
Diffstat (limited to 'src/lib/libc/net/rcmd.c')
-rw-r--r-- | src/lib/libc/net/rcmd.c | 60 |
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) |
32 | static char *rcsid = "$OpenBSD: rcmd.c,v 1.51 2005/03/08 18:34:42 deraadt Exp $"; | 32 | static 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 *); | |||
59 | static char *__gethostloop(struct sockaddr *, socklen_t); | 59 | static char *__gethostloop(struct sockaddr *, socklen_t); |
60 | 60 | ||
61 | int | 61 | int |
62 | rcmd(ahost, rport, locuser, remuser, cmd, fd2p) | 62 | rcmd(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 | ||
71 | int | 68 | int |
72 | rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af) | 69 | rcmd_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; | |||
322 | char *__rcmd_errstr; | 316 | char *__rcmd_errstr; |
323 | 317 | ||
324 | int | 318 | int |
325 | ruserok(rhost, superuser, ruser, luser) | 319 | ruserok(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 | */ |
359 | int | 351 | int |
360 | iruserok(raddr, superuser, ruser, luser) | 352 | iruserok(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 | ||
375 | int | 364 | int |
376 | iruserok_sa(raddr, rlen, superuser, ruser, luser) | 365 | iruserok_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 | */ |
452 | int | 438 | int |
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 | ||
468 | int | 452 | int |
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 | */ |
615 | static int | 596 | static 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 | */ |
664 | static char * | 642 | static 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]; |