summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_tty.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r--winsup/cygwin/fhandler_tty.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index a8a56598e..c68211b66 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -1419,13 +1419,19 @@ fhandler_pty_master::ioctl (unsigned int cmd, void *arg)
return 0;
}
-char *
-fhandler_pty_master::ptsname ()
+int
+fhandler_pty_master::ptsname_r (char *buf, size_t buflen)
{
- static char buf[TTY_NAME_MAX];
+ char tmpbuf[TTY_NAME_MAX];
- __small_sprintf (buf, "/dev/pty%d", get_unit ());
- return buf;
+ __small_sprintf (tmpbuf, "/dev/pty%d", get_unit ());
+ if (buflen <= strlen (tmpbuf))
+ {
+ set_errno (ERANGE);
+ return ERANGE;
+ }
+ strcpy (buf, tmpbuf);
+ return 0;
}
void