diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:18:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:18:36 +0000 |
commit | 6c3ea4f47ea280811a7fe53a22f7832e4533c9ec (patch) | |
tree | 3d7ed5da23b5dbf6f9e450dfb61642832249c31e /libmisc/rlogin.c | |
parent | Adding upstream version 1:4.13+dfsg1. (diff) | |
download | shadow-6c3ea4f47ea280811a7fe53a22f7832e4533c9ec.tar.xz shadow-6c3ea4f47ea280811a7fe53a22f7832e4533c9ec.zip |
Adding upstream version 1:4.15.2.upstream/1%4.15.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'libmisc/rlogin.c')
-rw-r--r-- | libmisc/rlogin.c | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/libmisc/rlogin.c b/libmisc/rlogin.c deleted file mode 100644 index fa67dc3..0000000 --- a/libmisc/rlogin.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include <config.h> - -#ifdef RLOGIN - -#ident "$Id$" - -#include "prototypes.h" -#include "defines.h" -#include <stdio.h> -#include <pwd.h> -#include <netdb.h> -static struct { - int spd_name; - int spd_baud; -} speed_table[] = -{ -#ifdef B50 - { - B50, 50}, -#endif -#ifdef B75 - { - B75, 75}, -#endif -#ifdef B110 - { - B110, 110}, -#endif -#ifdef B134 - { - B134, 134}, -#endif -#ifdef B150 - { - B150, 150}, -#endif -#ifdef B200 - { - B200, 200}, -#endif -#ifdef B300 - { - B300, 300}, -#endif -#ifdef B600 - { - B600, 600}, -#endif -#ifdef B1200 - { - B1200, 1200}, -#endif -#ifdef B1800 - { - B1800, 1800}, -#endif -#ifdef B2400 - { - B2400, 2400}, -#endif -#ifdef B4800 - { - B4800, 4800}, -#endif -#ifdef B9600 - { - B9600, 9600}, -#endif -#ifdef B19200 - { - B19200, 19200}, -#endif -#ifdef B38400 - { - B38400, 38400}, -#endif - { - -1, -1} -}; - -static void get_remote_string (char *buf, size_t size) -{ - for (;;) { - if (read (0, buf, 1) != 1) { - exit (EXIT_FAILURE); - } - if ('\0' == *buf) { - return; - } - --size; - if (size > 0) { - ++buf; - } - } - /*NOTREACHED*/} - -int -do_rlogin (const char *remote_host, char *name, size_t namelen, char *term, - size_t termlen) -{ - struct passwd *pwd; - char remote_name[32]; - char *cp; - unsigned long remote_speed = 9600; - int speed_name = B9600; - int i; - TERMIO termio; - - get_remote_string (remote_name, sizeof remote_name); - get_remote_string (name, namelen); - get_remote_string (term, termlen); - - cp = strchr (term, '/'); - if (NULL != cp) { - *cp = '\0'; - cp++; - - if (getulong (cp, &remote_speed) == 0) { - remote_speed = 9600; - } - } - for (i = 0; - ( (speed_table[i].spd_baud != remote_speed) - && (speed_table[i].spd_name != -1)); - i++); - - if (-1 != speed_table[i].spd_name) { - speed_name = speed_table[i].spd_name; - } - - /* - * Put the terminal in cooked mode with echo turned on. - */ - - GTTY (0, &termio); - termio.c_iflag |= ICRNL | IXON; - termio.c_oflag |= OPOST | ONLCR; - termio.c_lflag |= ICANON | ECHO | ECHOE; -#ifdef CBAUD - termio.c_cflag = (termio.c_cflag & ~CBAUD) | speed_name; -#else - termio.c_cflag = (termio.c_cflag) | speed_name; -#endif - STTY (0, &termio); - - pwd = getpwnam (name); /* local, no need for xgetpwnam */ - if (NULL == pwd) { - return 0; - } - - /* - * ruserok() returns 0 for success on modern systems, and 1 on - * older ones. If you are having trouble with people logging - * in without giving a required password, THIS is the culprit - - * go fix the #define in config.h. - */ - -#ifndef RUSEROK - return 0; -#else - return ruserok (remote_host, pwd->pw_uid == 0, - remote_name, name) == RUSEROK; -#endif -} -#endif /* RLOGIN */ - |