summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch')
-rw-r--r--sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch95
1 files changed, 0 insertions, 95 deletions
diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch
deleted file mode 100644
index 8b4bb780d541..000000000000
--- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-http://security.freebsd.org/advisories/FreeBSD-SA-08:01.pty.asc
-
-Index: lib/libc/stdlib/grantpt.c
-===================================================================
-RCS file: /home/ncvs/src/lib/libc/stdlib/grantpt.c,v
-retrieving revision 1.4.10.1
-diff -u -I__FBSDID -I$FreeBSD -r1.4.10.1 grantpt.c
---- lib/libc/stdlib/grantpt.c 18 Dec 2007 00:36:21 -0000 1.4.10.1
-+++ lib/libc/stdlib/grantpt.c 10 Jan 2008 20:54:30 -0000
-@@ -214,24 +214,30 @@
- ptsname(int fildes)
- {
- static char slave[] = _PATH_DEV PTS_PREFIX "XY";
-- char *retval;
-+ const char *master;
- struct stat sbuf;
-
-- retval = NULL;
--
-- if (_fstat(fildes, &sbuf) == 0) {
-- if (!ISPTM(sbuf))
-- errno = EINVAL;
-- else {
-- (void)snprintf(slave, sizeof(slave),
-- _PATH_DEV PTS_PREFIX "%s",
-- devname(sbuf.st_rdev, S_IFCHR) +
-- strlen(PTM_PREFIX));
-- retval = slave;
-- }
-- }
--
-- return (retval);
-+ /* All master pty's must be char devices. */
-+ if (_fstat(fildes, &sbuf) == -1)
-+ goto invalid;
-+ if (!S_ISCHR(sbuf.st_mode))
-+ goto invalid;
-+
-+ /* Check to see if this device is a pty(4) master. */
-+ master = devname(sbuf.st_rdev, S_IFCHR);
-+ if (strlen(master) != strlen(PTM_PREFIX "XY"))
-+ goto invalid;
-+ if (strncmp(master, PTM_PREFIX, strlen(PTM_PREFIX)) != 0)
-+ goto invalid;
-+
-+ /* It is, so generate the corresponding pty(4) slave name. */
-+ (void)snprintf(slave, sizeof(slave), _PATH_DEV PTS_PREFIX "%s",
-+ master + strlen(PTM_PREFIX));
-+ return (slave);
-+
-+invalid:
-+ errno = EINVAL;
-+ return (NULL);
- }
-
- /*
-@@ -240,18 +246,14 @@
- int
- unlockpt(int fildes)
- {
-- int retval;
-- struct stat sbuf;
-
- /*
- * Unlocking a master/slave pseudo-terminal pair has no meaning in a
- * non-streams PTY environment. However, we do ensure fildes is a
- * valid master pseudo-terminal device.
- */
-- if ((retval = _fstat(fildes, &sbuf)) == 0 && !ISPTM(sbuf)) {
-- errno = EINVAL;
-- retval = -1;
-- }
-+ if (ptsname(fildes) == NULL)
-+ return (-1);
-
-- return (retval);
-+ return (0);
- }
-Index: lib/libutil/pty.c
-===================================================================
-RCS file: /home/ncvs/src/lib/libutil/pty.c,v
-retrieving revision 1.15.20.1
-diff -u -I__FBSDID -I$FreeBSD -r1.15.20.1 pty.c
---- lib/libutil/pty.c 27 Nov 2007 18:43:09 -0000 1.15.20.1
-+++ lib/libutil/pty.c 10 Jan 2008 20:54:30 -0000
-@@ -76,8 +76,7 @@
- break; /* try the next pty group */
- } else {
- line[5] = 't';
-- (void) chown(line, getuid(), ttygid);
-- (void) chmod(line, S_IRUSR|S_IWUSR|S_IWGRP);
-+ (void) grantpt(master);
- (void) revoke(line);
- if ((slave = open(line, O_RDWR, 0)) != -1) {
- *amaster = master;