- (djm) Use ttyname() to determine name of tty returned by openpty()
   rather then risking overflow. Patch from Marek Michalkiewicz
   <marekm@amelek.gda.pl>
diff --git a/ChangeLog b/ChangeLog
index b0da442..130a8f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,9 @@
    Miskiewicz <misiek@pld.ORG.PL>
  - (djm) Robustify EGD/PRNGd code in face of socket closures. Patch from
    Todd C. Miller <Todd.Miller@courtesan.com>
+ - (djm) Use ttyname() to determine name of tty returned by openpty() 
+   rather then risking overflow. Patch from Marek Michalkiewicz 
+   <marekm@amelek.gda.pl>
 
 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 e71bceb..4b9370c 100644
--- a/pty.c
+++ b/pty.c
@@ -49,15 +49,19 @@
 {
 #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