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 --- |