summaryrefslogtreecommitdiffstats
path: root/usr.bin/rlogin
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2002-10-16 16:09:05 +0000
committermarkm <markm@FreeBSD.org>2002-10-16 16:09:05 +0000
commit5c345be33034dadcf9a3663168d4409d69f40414 (patch)
treed5ff590c2e33407d04fc48653d09335f8ff89db9 /usr.bin/rlogin
parentde3f4fb0c591dff2b2d0df380ab15815456c28dd (diff)
downloadFreeBSD-src-5c345be33034dadcf9a3663168d4409d69f40414.zip
FreeBSD-src-5c345be33034dadcf9a3663168d4409d69f40414.tar.gz
Dekerberise. The corresponding userland stuff has been dekerberised
for ages, and no-one seems to have noticed. Viva PAM! Fix some easy/trivial warnings while I'm here.
Diffstat (limited to 'usr.bin/rlogin')
-rw-r--r--usr.bin/rlogin/Makefile13
-rw-r--r--usr.bin/rlogin/rlogin.c186
2 files changed, 24 insertions, 175 deletions
diff --git a/usr.bin/rlogin/Makefile b/usr.bin/rlogin/Makefile
index 42d4b81..2cc2e5c 100644
--- a/usr.bin/rlogin/Makefile
+++ b/usr.bin/rlogin/Makefile
@@ -8,17 +8,4 @@ BINOWN= root
BINMODE=4555
INSTALLFLAGS=-fschg
-.if defined(MAKE_KERBEROS4) && !defined(NO_OPENSSL) && !defined(NOCRYPT)
-SRCS+= krcmd.c kcmd.c rcmd_util.c
-DPADD= ${LIBUTIL} ${LIBKRB} ${LIBCRYPTO} ${LIBCRYPT} ${LIBCOM_ERR}
-CFLAGS+=-DKERBEROS -DCRYPT -DHAVE_CONFIG_H \
- -I${.CURDIR}/../../kerberosIV/include \
- -I${.CURDIR}/../../crypto/kerberosIV/include \
- -I${.CURDIR}/../../crypto/kerberosIV/lib/roken \
- -I${.CURDIR}/../../crypto/kerberosIV/appl/bsd
-LDADD= -lutil -lkrb -lcrypto -lcrypt -lcom_err
-DISTRIBUTION= krb4
-.PATH: ${.CURDIR}/../../crypto/kerberosIV/appl/bsd
-.endif
-
.include <bsd.prog.mk>
diff --git a/usr.bin/rlogin/rlogin.c b/usr.bin/rlogin/rlogin.c
index 34d00ef..89d1bef 100644
--- a/usr.bin/rlogin/rlogin.c
+++ b/usr.bin/rlogin/rlogin.c
@@ -83,18 +83,6 @@ __FBSDID("$FreeBSD$");
#include <string.h>
#include <unistd.h>
-#ifdef KERBEROS
-#include <openssl/des.h>
-#include <krb.h>
-
-#include "krb.h"
-
-CREDENTIALS cred;
-Key_schedule schedule;
-int use_kerberos = 1, doencrypt;
-char dst_realm_buf[REALM_SZ], *dest_realm = NULL;
-#endif
-
#ifndef TIOCPKT_WINDOW
#define TIOCPKT_WINDOW 0x80
#endif
@@ -124,7 +112,7 @@ void copytochild(int);
void doit(long) __dead2;
void done(int) __dead2;
void echo(char);
-u_int getescape(char *);
+u_int getescape(const char *);
void lostpeer(int);
void mode(int);
void msg(const char *);
@@ -145,11 +133,9 @@ main(int argc, char *argv[])
struct servent *sp;
struct sgttyb ttyb;
long omask;
- int argoff, ch, dflag, Dflag, one, uid;
+ int argoff, ch, dflag, Dflag, one;
+ uid_t uid;
char *host, *localname, *p, *user, term[1024];
-#ifdef KERBEROS
- char *k;
-#endif
struct sockaddr_storage ss;
int sslen;
@@ -171,11 +157,7 @@ main(int argc, char *argv[])
argoff = 1;
}
-#ifdef KERBEROS
-#define OPTIONS "468DEKLde:i:k:l:x"
-#else
#define OPTIONS "468DEKLde:i:l:"
-#endif
while ((ch = getopt(argc - argoff, argv + argoff, OPTIONS)) != -1)
switch(ch) {
case '4':
@@ -195,11 +177,6 @@ main(int argc, char *argv[])
case 'E':
noescape = 1;
break;
- case 'K':
-#ifdef KERBEROS
- use_kerberos = 0;
-#endif
- break;
case 'L':
litout = 1;
break;
@@ -215,22 +192,9 @@ main(int argc, char *argv[])
errx(1, "-i user: permission denied");
localname = optarg;
break;
-#ifdef KERBEROS
- case 'k':
- dest_realm = dst_realm_buf;
- (void)strncpy(dest_realm, optarg, REALM_SZ);
- break;
-#endif
case 'l':
user = optarg;
break;
-#ifdef CRYPT
-#ifdef KERBEROS
- case 'x':
- doencrypt = 1;
- break;
-#endif
-#endif
case '?':
default:
usage();
@@ -252,21 +216,7 @@ main(int argc, char *argv[])
localname = pw->pw_name;
sp = NULL;
-#ifdef KERBEROS
- k = auth_getval("auth_list");
- if (k && !strstr(k, "kerberos"))
- use_kerberos = 0;
- if (use_kerberos) {
- sp = getservbyname((doencrypt ? "eklogin" : "klogin"), "tcp");
- if (sp == NULL) {
- use_kerberos = 0;
- warn("can't get entry for %s/tcp service",
- doencrypt ? "eklogin" : "klogin");
- }
- }
-#endif
- if (sp == NULL)
- sp = getservbyname("login", "tcp");
+ sp = getservbyname("login", "tcp");
if (sp == NULL)
errx(1, "login/tcp: unknown service");
@@ -294,56 +244,7 @@ main(int argc, char *argv[])
(void)signal(SIGURG, copytochild);
(void)signal(SIGUSR1, writeroob);
-#ifdef KERBEROS
- if (use_kerberos) {
- setuid(getuid());
- rem = KSUCCESS;
- errno = 0;
- if (dest_realm == NULL)
- dest_realm = krb_realmofhost(host);
-
-#ifdef CRYPT
- if (doencrypt) {
- rem = krcmd_mutual(&host, sp->s_port, user, term, 0,
- dest_realm, &cred, schedule);
- des_set_key(&cred.session, schedule);
- } else
-#endif /* CRYPT */
- rem = krcmd(&host, sp->s_port, user, term, 0,
- dest_realm);
- if (rem < 0) {
- int i;
- char **newargv;
-
- sp = getservbyname("login", "tcp");
- if (sp == NULL)
- errx(1, "login/tcp: unknown service");
- if (errno == ECONNREFUSED)
- warn("remote host doesn't support Kerberos");
- if (errno == ENOENT)
- warn("can't provide Kerberos auth data");
- newargv = malloc((argc + 2) * sizeof(*newargv));
- if (newargv == NULL)
- err(1, "malloc");
- newargv[0] = argv[0];
- newargv[1] = "-K";
- for(i = 1; i < argc; ++i)
- newargv[i + 1] = argv[i];
- newargv[argc + 1] = NULL;
- execv(_PATH_RLOGIN, newargv);
- err(1, "can't exec %s", _PATH_RLOGIN);
- }
- } else {
-#ifdef CRYPT
- if (doencrypt)
- errx(1, "the -x flag requires Kerberos authentication");
-#endif /* CRYPT */
- rem = rcmd_af(&host, sp->s_port, localname, user, term, 0,
- family);
- }
-#else
rem = rcmd_af(&host, sp->s_port, localname, user, term, 0, family);
-#endif /* KERBEROS */
if (rem < 0)
exit(1);
@@ -459,6 +360,7 @@ int dosigwinch;
* This is called when the reader process gets the out-of-band (urgent)
* request to turn on the window-changing protocol.
*/
+/* ARGSUSED */
void
writeroob(int signo __unused)
{
@@ -469,6 +371,7 @@ writeroob(int signo __unused)
dosigwinch = 1;
}
+/* ARGSUSED */
void
catch_child(int signo __unused)
{
@@ -533,32 +436,13 @@ writer(void)
continue;
}
if (c != escapechar)
-#ifdef CRYPT
-#ifdef KERBEROS
- if (doencrypt)
- (void)des_enc_write(rem,
- (char *)&escapechar, 1,
- schedule, &cred.session);
- else
-#endif
-#endif
- (void)write(rem, &escapechar, 1);
+ (void)write(rem, &escapechar, 1);
}
-#ifdef CRYPT
-#ifdef KERBEROS
- if (doencrypt) {
- if (des_enc_write(rem, &c, 1, schedule, &cred.session) == 0) {
- msg("line gone");
- break;
- }
- } else
-#endif
-#endif
- if (write(rem, &c, 1) == 0) {
- msg("line gone");
- break;
- }
+ if (write(rem, &c, 1) == 0) {
+ msg("line gone");
+ break;
+ }
bol = c == defkill || c == deftc.t_eofc ||
c == deftc.t_intrc || c == defltc.t_suspc ||
c == '\r' || c == '\n';
@@ -598,6 +482,7 @@ stop(char cmdc)
sigwinch(0); /* check for size changes */
}
+/* ARGSUSED */
void
sigwinch(int signo __unused)
{
@@ -629,15 +514,7 @@ sendwindow(void)
wp->ws_xpixel = htons(winsize.ws_xpixel);
wp->ws_ypixel = htons(winsize.ws_ypixel);
-#ifdef CRYPT
-#ifdef KERBEROS
- if(doencrypt)
- (void)des_enc_write(rem, obuf, sizeof(obuf),
- schedule, &cred.session);
- else
-#endif
-#endif
- (void)write(rem, obuf, sizeof(obuf));
+ (void)write(rem, obuf, sizeof(obuf));
}
/*
@@ -647,9 +524,11 @@ sendwindow(void)
#define WRITING 2
jmp_buf rcvtop;
-int ppid, rcvcnt, rcvstate;
+int rcvcnt, rcvstate;
+pid_t ppid;
char rcvbuf[8 * 1024];
+/* ARGSUSED */
void
oob(int signo __unused)
{
@@ -743,14 +622,11 @@ oob(int signo __unused)
int
reader(int omask)
{
- int pid, n, remaining;
+ int n, remaining;
char *bufp;
+ pid_t pid;
-#if BSD >= 43 || defined(SUNOS4)
- pid = getpid(); /* modern systems use positives for pid */
-#else
- pid = -getpid(); /* old broken systems use negatives */
-#endif
+ pid = getpid();
(void)signal(SIGTTOU, SIG_IGN);
(void)signal(SIGURG, oob);
(void)signal(SIGUSR1, oob); /* When propogating SIGURG from parent */
@@ -774,15 +650,7 @@ reader(int omask)
rcvcnt = 0;
rcvstate = READING;
-#ifdef CRYPT
-#ifdef KERBEROS
- if (doencrypt)
- rcvcnt = des_enc_read(rem, rcvbuf, sizeof(rcvbuf),
- schedule, &cred.session);
- else
-#endif
-#endif
- rcvcnt = read(rem, rcvbuf, sizeof (rcvbuf));
+ rcvcnt = read(rem, rcvbuf, sizeof (rcvbuf));
if (rcvcnt == 0)
return (0);
if (rcvcnt < 0) {
@@ -835,6 +703,7 @@ mode(int f)
(void)ioctl(0, TIOCLSET, (char *)&lflags);
}
+/* ARGSUSED */
void
lostpeer(int signo __unused)
{
@@ -844,6 +713,7 @@ lostpeer(int signo __unused)
}
/* copy SIGURGs to the child process via SIGUSR1. */
+/* ARGSUSED */
void
copytochild(int signo __unused)
{
@@ -861,23 +731,15 @@ usage(void)
{
(void)fprintf(stderr,
"usage: rlogin [-46%s]%s[-e char] [-i localname] [-l username] host\n",
-#ifdef KERBEROS
-#ifdef CRYPT
- "8DEKLdx", " [-k realm] ");
-#else
- "8DEKLd", " [-k realm] ");
-#endif
-#else
"8DEKLd", " ");
-#endif
exit(1);
}
u_int
-getescape(char *p)
+getescape(const char *p)
{
long val;
- int len;
+ size_t len;
if ((len = strlen(p)) == 1) /* use any single char, including '\' */
return ((u_int)*p);
OpenPOWER on IntegriCloud