aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/unix/sysv/linux/ttyname.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a169cee2c5..25bb3255df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,13 @@
2009-10-29 Ulrich Drepper <drepper@redhat.com>
+ [BZ #10784]
+ * sysdeps/unix/sysv/linux/ttyname.c (getttyname): Always copy name
+ of the directory we look at into the static buffer if there is one
+ at the start of the loop.
+
[BZ #10789]
* sysdeps/generic/netinet/ip.h: Define IPTOS_ENC* and IPTOS_DSCP*
- macros. Patch by Philip Prindeville <philipp@redfish-solutions.com>.
+ macros. Patch by Philip Prindeville <philipp@redfish-solutions.com>.
[BZ #10840]
* sysdeps/unix/sysv/linux/kernel-features.h: Define
diff --git a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c
index 1b79787515..69af6adc65 100644
--- a/sysdeps/unix/sysv/linux/ttyname.c
+++ b/sysdeps/unix/sysv/linux/ttyname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,1996-2002,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,1996-2002,2006,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -59,6 +59,11 @@ getttyname (const char *dev, dev_t mydev, ino64_t myino, int save, int *dostat)
return NULL;
}
+ /* Prepare for the loop. If we already have a buffer copy the directory
+ name we look at into it. */
+ if (devlen < namelen)
+ *((char *) __mempcpy (getttyname_name, dev, devlen - 1)) = '/';
+
while ((d = __readdir64 (dirstream)) != NULL)
if ((d->d_fileno == myino || *dostat)
&& strcmp (d->d_name, "stdin")