From 99e924357eaf5a3f63028d741071370e22746e9c Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Sun, 18 Feb 2001 12:49:35 +1100 Subject: - (djm) Use ttyname() to determine name of tty returned by openpty() rather then risking overflow. Patch from Marek Michalkiewicz --- ChangeLog | 5 ++++- pty.c | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b0da442c9..130a8f395 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,9 @@ Miskiewicz - (djm) Robustify EGD/PRNGd code in face of socket closures. Patch from Todd C. Miller + - (djm) Use ttyname() to determine name of tty returned by openpty() + rather then risking overflow. Patch from Marek Michalkiewicz + 20010217 - (bal) OpenBSD Sync: @@ -4016,4 +4019,4 @@ - Wrote replacements for strlcpy and mkdtemp - Released 1.0pre1 -$Id: ChangeLog,v 1.787 2001/02/18 01:44:29 djm Exp $ +$Id: ChangeLog,v 1.788 2001/02/18 01:49:35 djm Exp $ diff --git a/pty.c b/pty.c index e71bceb80..4b9370ce5 100644 --- a/pty.c +++ b/pty.c @@ -49,15 +49,19 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) { #if defined(HAVE_OPENPTY) || defined(BSD4_4) /* openpty(3) exists in OSF/1 and some other os'es */ - char buf[64]; + char *name; int i; - i = openpty(ptyfd, ttyfd, buf, NULL, NULL); + i = openpty(ptyfd, ttyfd, NULL, NULL, NULL); if (i < 0) { error("openpty: %.100s", strerror(errno)); return 0; } - strlcpy(namebuf, buf, namebuflen); /* possible truncation */ + name = ttyname(*ttyfd); + if (!name) + fatal("openpty returns device for which ttyname fails."); + + strlcpy(namebuf, name, namebuflen); /* possible truncation */ return 1; #else /* HAVE_OPENPTY */ #ifdef HAVE__GETPTY -- cgit v1.2.3