diff options
Diffstat (limited to 'security/sudosh2/files/patch-src::sudosh.c')
-rw-r--r-- | security/sudosh2/files/patch-src::sudosh.c | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/security/sudosh2/files/patch-src::sudosh.c b/security/sudosh2/files/patch-src::sudosh.c deleted file mode 100644 index eccb20ad878e..000000000000 --- a/security/sudosh2/files/patch-src::sudosh.c +++ /dev/null @@ -1,173 +0,0 @@ ---- src/sudosh.c.orig Tue Oct 26 18:01:24 2004 -+++ src/sudosh.c Sat Nov 13 19:31:14 2004 -@@ -24,6 +24,9 @@ - #include <unistd.h> - #include <signal.h> - #include <pwd.h> -+#ifdef __FreeBSD__ -+#include <sys/param.h> -+#endif - - #include "config.h" - -@@ -75,6 +78,12 @@ - #define SIGCHLD SIGCLD - #endif - -+#ifdef __FreeBSD__ -+#include <sys/types.h> -+#include <sys/ioctl.h> -+#include <libutil.h> -+#endif -+ - static struct termios termorig; - static struct winsize winorig; - -@@ -99,6 +108,9 @@ - static void rawmode (int); - static int findms (struct pst *); - void mysyslog (int, const char *, ...); -+#ifdef __FreeBSD__ -+static void sanemode(int ttyfd); -+#endif - - int - main (int argc, char *argv[], char *environ[]) -@@ -255,8 +267,9 @@ - mysyslog (LOG_INFO, start_msg); - mysyslog (LOG_INFO, "to view this session type: sudosh-replay %s-%i", - user, now); -- -+#ifndef __FreeBSD__ - rawmode (0); -+#endif - - if (findms (&pspair) < 0) - { -@@ -269,6 +282,9 @@ - case 0: - close (pspair.mfd); - prepchild (&pspair); -+#ifdef __FreeBSD__ -+ rawmode (0); -+#endif - case -1: - perror ("fork failed"); - bye (1); -@@ -276,6 +292,9 @@ - close (pspair.sfd); - } - -+#ifdef __FreeBSD__ -+ rawmode(0); -+#endif - setuid (getuid ()); - - memset (&sa, 0, sizeof sa); -@@ -377,15 +396,32 @@ - { - if ((p->mfd = open ("/dev/ptc", O_RDWR)) == -1) - { -- perror ("Cannot open cloning master pty"); -- return -1; -+#ifdef __FreeBSD__ -+#define PTYLEN 16 -+ if ((int)(sname= malloc(PTYLEN)) == -1) -+ { -+ perror("Cannot allocate memory"); -+ return -1; -+ } -+ if (openpty(&p->mfd, &p->sfd, sname, NULL, NULL) == -1) -+ { -+#endif -+ perror ("Cannot open cloning master pty"); -+ return -1; -+#ifdef __FreeBSD__ -+ } -+#endif - } - } - -+#if !defined(__FreeBSD_version) || (defined(__FreeBSD_version) && __FreeBSD_version >= 500000) - (void) unlockpt (p->mfd); - (void) grantpt (p->mfd); -+#endif - -+#ifndef __FreeBSD__ - sname = (char *) ptsname (p->mfd); -+#endif - - if ((p->sfd = open (sname, O_RDWR)) == -1) - { -@@ -456,11 +492,53 @@ - abort (); - } - -+#ifdef __FreeBSD__ -+static void -+sanemode(int ttyfd) -+{ -+ static struct termios termnew; -+ -+ if (tcgetattr(ttyfd, &termnew) == -1) -+ { -+ perror ("tcgetattr failed"); -+ exit (1); -+ } -+ termnew.c_cflag = TTYDEF_CFLAG | (termnew.c_cflag & CLOCAL); -+ termnew.c_iflag = TTYDEF_IFLAG; -+ termnew.c_iflag |= ICRNL; -+ /* preserve user-preference flags in lflag */ -+#define LKEEP (ECHOKE|ECHOE|ECHOK|ECHOPRT|ECHOCTL|ALTWERASE|TOSTOP|NOFLSH) -+ termnew.c_lflag = TTYDEF_LFLAG | (termnew.c_lflag & LKEEP); -+ termnew.c_oflag = TTYDEF_OFLAG; -+ if (tcsetattr(ttyfd, TCSAFLUSH, &termnew) == -1) -+ { -+ perror ("tcsetattr (sane) failed"); -+ exit (1); -+ } -+} -+#endif -+ - static void - rawmode (int ttyfd) - { - static struct termios termnew; - -+#ifdef __FreeBSD__ -+ if (tcgetattr(ttyfd, &termnew) == -1) -+ { -+ perror ("tcgetattr failed"); -+ exit (1); -+ } -+ cfmakeraw(&termnew); -+ termnew.c_cflag &= ~(CSIZE|PARENB); -+ termnew.c_cflag |= CS8; -+ if (tcsetattr(ttyfd, TCSADRAIN, &termnew) == -1) -+ { -+ perror ("tcsetattr (raw) failed"); -+ exit (1); -+ } -+ return; -+#else __FreeBSD__ - #ifdef TCGETS - if (ioctl (ttyfd, TCGETS, &termorig) == -1) - { -@@ -484,6 +562,7 @@ - #ifdef TCSETS - (void) ioctl (ttyfd, TCSETS, &termnew); - #endif -+#endif __FreeBSD__ - } - - static void -@@ -491,6 +570,9 @@ - { - #ifdef TCSETS - (void) ioctl (0, TCSETS, &termorig); -+#endif -+#ifdef __FreeBSD__ -+ sanemode(0); - #endif - - fclose (fttime); |