Deleted Added
full compact
rlogin.c (27919) rlogin.c (29922)
1/*
2 * Copyright (c) 1983, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 24 unchanged lines hidden (view full) ---

33
34#ifndef lint
35static const char copyright[] =
36"@(#) Copyright (c) 1983, 1990, 1993\n\
37 The Regents of the University of California. All rights reserved.\n";
38#endif /* not lint */
39
40#ifndef lint
1/*
2 * Copyright (c) 1983, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 24 unchanged lines hidden (view full) ---

33
34#ifndef lint
35static const char copyright[] =
36"@(#) Copyright (c) 1983, 1990, 1993\n\
37 The Regents of the University of California. All rights reserved.\n";
38#endif /* not lint */
39
40#ifndef lint
41#if 0
42static char sccsid[] = "@(#)rlogin.c 8.1 (Berkeley) 6/6/93";
43#endif
41static const char sccsid[] = "@(#)rlogin.c 8.1 (Berkeley) 6/6/93";
44static const char rcsid[] =
42static const char rcsid[] =
45 "$Id$";
43 "$Id: rlogin.c,v 1.15 1997/08/05 06:46:46 charnier Exp $";
46#endif /* not lint */
47
48/*
49 * rlogin - remote login
50 */
51#include <sys/param.h>
52#include <sys/socket.h>
53#include <sys/time.h>

--- 12 unchanged lines hidden (view full) ---

66#include <pwd.h>
67#include <setjmp.h>
68#include <sgtty.h>
69#include <signal.h>
70#include <stdio.h>
71#include <stdlib.h>
72#include <string.h>
73#include <unistd.h>
44#endif /* not lint */
45
46/*
47 * rlogin - remote login
48 */
49#include <sys/param.h>
50#include <sys/socket.h>
51#include <sys/time.h>

--- 12 unchanged lines hidden (view full) ---

64#include <pwd.h>
65#include <setjmp.h>
66#include <sgtty.h>
67#include <signal.h>
68#include <stdio.h>
69#include <stdlib.h>
70#include <string.h>
71#include <unistd.h>
72#include <err.h>
74
73
75#ifdef __STDC__
76#include <stdarg.h>
77#else
78#include <varargs.h>
79#endif
80
81#ifdef KERBEROS
82#include <des.h>
74#ifdef KERBEROS
75#include <des.h>
83#include <kerberosIV/krb.h>
76#include
84
85#include "krb.h"
86
87CREDENTIALS cred;
88Key_schedule schedule;
89int use_kerberos = 1, doencrypt;
90char dst_realm_buf[REALM_SZ], *dest_realm = NULL;
91#endif

--- 42 unchanged lines hidden (view full) ---

134void sendwindow __P((void));
135void setsignal __P((int));
136void sigwinch __P((int));
137void stop __P((char));
138void usage __P((void)) __dead2;
139void writer __P((void));
140void writeroob __P((int));
141
77
78#include "krb.h"
79
80CREDENTIALS cred;
81Key_schedule schedule;
82int use_kerberos = 1, doencrypt;
83char dst_realm_buf[REALM_SZ], *dest_realm = NULL;
84#endif

--- 42 unchanged lines hidden (view full) ---

127void sendwindow __P((void));
128void setsignal __P((int));
129void sigwinch __P((int));
130void stop __P((char));
131void usage __P((void)) __dead2;
132void writer __P((void));
133void writeroob __P((int));
134
142#ifdef KERBEROS
143void warning __P((const char *, ...));
144#endif
145#ifdef OLDSUN
146int get_window_size __P((int, struct winsize *));
147#endif
148
149int
150main(argc, argv)
151 int argc;
152 char *argv[];

--- 6 unchanged lines hidden (view full) ---

159 long omask;
160 int argoff, ch, dflag, Dflag, one, uid;
161 char *host, *p, *user, term[1024];
162
163 argoff = dflag = Dflag = 0;
164 one = 1;
165 host = user = NULL;
166
135#ifdef OLDSUN
136int get_window_size __P((int, struct winsize *));
137#endif
138
139int
140main(argc, argv)
141 int argc;
142 char *argv[];

--- 6 unchanged lines hidden (view full) ---

149 long omask;
150 int argoff, ch, dflag, Dflag, one, uid;
151 char *host, *p, *user, term[1024];
152
153 argoff = dflag = Dflag = 0;
154 one = 1;
155 host = user = NULL;
156
167 if (p = rindex(argv[0], '/'))
157 if ((p = rindex(argv[0], '/')))
168 ++p;
169 else
170 p = argv[0];
171
172 if (strcmp(p, "rlogin"))
173 host = p;
174
175 /* handle "rlogin host flags" */

--- 70 unchanged lines hidden (view full) ---

246 user = pw->pw_name;
247
248 sp = NULL;
249#ifdef KERBEROS
250 if (use_kerberos) {
251 sp = getservbyname((doencrypt ? "eklogin" : "klogin"), "tcp");
252 if (sp == NULL) {
253 use_kerberos = 0;
158 ++p;
159 else
160 p = argv[0];
161
162 if (strcmp(p, "rlogin"))
163 host = p;
164
165 /* handle "rlogin host flags" */

--- 70 unchanged lines hidden (view full) ---

236 user = pw->pw_name;
237
238 sp = NULL;
239#ifdef KERBEROS
240 if (use_kerberos) {
241 sp = getservbyname((doencrypt ? "eklogin" : "klogin"), "tcp");
242 if (sp == NULL) {
243 use_kerberos = 0;
254 warning("can't get entry for %s/tcp service",
244 warn("can't get entry for %s/tcp service",
255 doencrypt ? "eklogin" : "klogin");
256 }
257 }
258#endif
259 if (sp == NULL)
260 sp = getservbyname("login", "tcp");
261 if (sp == NULL)
262 errx(1, "login/tcp: unknown service");

--- 36 unchanged lines hidden (view full) ---

299 errno = 0;
300 if (dest_realm == NULL)
301 dest_realm = krb_realmofhost(host);
302
303#ifdef CRYPT
304 if (doencrypt) {
305 rem = krcmd_mutual(&host, sp->s_port, user, term, 0,
306 dest_realm, &cred, schedule);
245 doencrypt ? "eklogin" : "klogin");
246 }
247 }
248#endif
249 if (sp == NULL)
250 sp = getservbyname("login", "tcp");
251 if (sp == NULL)
252 errx(1, "login/tcp: unknown service");

--- 36 unchanged lines hidden (view full) ---

289 errno = 0;
290 if (dest_realm == NULL)
291 dest_realm = krb_realmofhost(host);
292
293#ifdef CRYPT
294 if (doencrypt) {
295 rem = krcmd_mutual(&host, sp->s_port, user, term, 0,
296 dest_realm, &cred, schedule);
307 des_set_key_krb(&cred.session, schedule);
297 des_set_key(&cred.session, schedule);
308 } else
309#endif /* CRYPT */
310 rem = krcmd(&host, sp->s_port, user, term, 0,
311 dest_realm);
312 if (rem < 0) {
313 use_kerberos = 0;
314 sp = getservbyname("login", "tcp");
315 if (sp == NULL)
316 errx(1, "unknown service login/tcp");
317 if (errno == ECONNREFUSED)
298 } else
299#endif /* CRYPT */
300 rem = krcmd(&host, sp->s_port, user, term, 0,
301 dest_realm);
302 if (rem < 0) {
303 use_kerberos = 0;
304 sp = getservbyname("login", "tcp");
305 if (sp == NULL)
306 errx(1, "unknown service login/tcp");
307 if (errno == ECONNREFUSED)
318 warning("remote host doesn't support Kerberos");
308 warn("remote host doesn't support Kerberos");
319 if (errno == ENOENT)
309 if (errno == ENOENT)
320 warning("can't provide Kerberos auth data");
310 warn("can't provide Kerberos auth data");
321 goto try_connect;
322 }
323 } else {
324#ifdef CRYPT
325 if (doencrypt)
326 errx(1, "the -x flag requires Kerberos authentication");
327#endif /* CRYPT */
328 rem = rcmd(&host, sp->s_port, pw->pw_name, user, term, 0);

--- 186 unchanged lines hidden (view full) ---

515 echo(c);
516 stop(c);
517 continue;
518 }
519 if (c != escapechar)
520#ifdef CRYPT
521#ifdef KERBEROS
522 if (doencrypt)
311 goto try_connect;
312 }
313 } else {
314#ifdef CRYPT
315 if (doencrypt)
316 errx(1, "the -x flag requires Kerberos authentication");
317#endif /* CRYPT */
318 rem = rcmd(&host, sp->s_port, pw->pw_name, user, term, 0);

--- 186 unchanged lines hidden (view full) ---

505 echo(c);
506 stop(c);
507 continue;
508 }
509 if (c != escapechar)
510#ifdef CRYPT
511#ifdef KERBEROS
512 if (doencrypt)
523 (void)des_write(rem,
524 (char *)&escapechar, 1);
513 (void)des_enc_write(rem,
514 (char *)&escapechar, 1,
515 schedule, &cred.session);
525 else
526#endif
527#endif
528 (void)write(rem, &escapechar, 1);
529 }
530
531#ifdef CRYPT
532#ifdef KERBEROS
533 if (doencrypt) {
516 else
517#endif
518#endif
519 (void)write(rem, &escapechar, 1);
520 }
521
522#ifdef CRYPT
523#ifdef KERBEROS
524 if (doencrypt) {
534 if (des_write(rem, &c, 1) == 0) {
525 if (des_enc_write(rem, &c, 1, schedule, &cred.session) == 0) {
535 msg("line gone");
536 break;
537 }
538 } else
539#endif
540#endif
541 if (write(rem, &c, 1) == 0) {
542 msg("line gone");

--- 78 unchanged lines hidden (view full) ---

621 wp->ws_row = htons(winsize.ws_row);
622 wp->ws_col = htons(winsize.ws_col);
623 wp->ws_xpixel = htons(winsize.ws_xpixel);
624 wp->ws_ypixel = htons(winsize.ws_ypixel);
625
626#ifdef CRYPT
627#ifdef KERBEROS
628 if(doencrypt)
526 msg("line gone");
527 break;
528 }
529 } else
530#endif
531#endif
532 if (write(rem, &c, 1) == 0) {
533 msg("line gone");

--- 78 unchanged lines hidden (view full) ---

612 wp->ws_row = htons(winsize.ws_row);
613 wp->ws_col = htons(winsize.ws_col);
614 wp->ws_xpixel = htons(winsize.ws_xpixel);
615 wp->ws_ypixel = htons(winsize.ws_ypixel);
616
617#ifdef CRYPT
618#ifdef KERBEROS
619 if(doencrypt)
629 (void)des_write(rem, obuf, sizeof(obuf));
620 (void)des_enc_write(rem, obuf, sizeof(obuf),
621 schedule, &cred.session);
630 else
631#endif
632#endif
633 (void)write(rem, obuf, sizeof(obuf));
634}
635
636/*
637 * reader: read from remote: line -> 1

--- 128 unchanged lines hidden (view full) ---

766 }
767 bufp = rcvbuf;
768 rcvcnt = 0;
769 rcvstate = READING;
770
771#ifdef CRYPT
772#ifdef KERBEROS
773 if (doencrypt)
622 else
623#endif
624#endif
625 (void)write(rem, obuf, sizeof(obuf));
626}
627
628/*
629 * reader: read from remote: line -> 1

--- 128 unchanged lines hidden (view full) ---

758 }
759 bufp = rcvbuf;
760 rcvcnt = 0;
761 rcvstate = READING;
762
763#ifdef CRYPT
764#ifdef KERBEROS
765 if (doencrypt)
774 rcvcnt = des_read(rem, rcvbuf, sizeof(rcvbuf));
766 rcvcnt = des_enc_read(rem, rcvbuf, sizeof(rcvbuf),
767 schedule, &cred.session);
775 else
776#endif
777#endif
778 rcvcnt = read(rem, rcvbuf, sizeof (rcvbuf));
779 if (rcvcnt == 0)
780 return (0);
781 if (rcvcnt < 0) {
782 if (errno == EINTR)

--- 65 unchanged lines hidden (view full) ---

848
849void
850msg(str)
851 char *str;
852{
853 (void)fprintf(stderr, "rlogin: %s\r\n", str);
854}
855
768 else
769#endif
770#endif
771 rcvcnt = read(rem, rcvbuf, sizeof (rcvbuf));
772 if (rcvcnt == 0)
773 return (0);
774 if (rcvcnt < 0) {
775 if (errno == EINTR)

--- 65 unchanged lines hidden (view full) ---

841
842void
843msg(str)
844 char *str;
845{
846 (void)fprintf(stderr, "rlogin: %s\r\n", str);
847}
848
856#ifdef KERBEROS
857/* VARARGS */
858void
849void
859#if __STDC__
860warning(const char *fmt, ...)
861#else
862warning(fmt, va_alist)
863 char *fmt;
864 va_dcl
865#endif
866{
867 va_list ap;
868
869 (void)fprintf(stderr, "rlogin: warning, using standard rlogin: ");
870#ifdef __STDC__
871 va_start(ap, fmt);
872#else
873 va_start(ap);
874#endif
875 vfprintf(stderr, fmt, ap);
876 va_end(ap);
877 (void)fprintf(stderr, ".\n");
878}
879#endif
880
881void
882usage()
883{
884 (void)fprintf(stderr,
885 "usage: rlogin [ -%s]%s[-e char] [ -l username ] host\n",
886#ifdef KERBEROS
887#ifdef CRYPT
888 "8DEKLx", " [-k realm] ");
889#else

--- 54 unchanged lines hidden ---
850usage()
851{
852 (void)fprintf(stderr,
853 "usage: rlogin [ -%s]%s[-e char] [ -l username ] host\n",
854#ifdef KERBEROS
855#ifdef CRYPT
856 "8DEKLx", " [-k realm] ");
857#else

--- 54 unchanged lines hidden ---