mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Don't make ttyname* fail if proc filesystem is not available
The ttyname and ttyname_r functions on Linux now fall back to searching for the tty file descriptor in /dev/pts or /dev if /proc is not available. This allows creation of chroots without the procfs mounted on /proc. Fixes BZ #14516.
This commit is contained in:
parent
ad845c0be9
commit
050af9c4e8
@ -1,3 +1,10 @@
|
|||||||
|
2012-08-29 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||||
|
|
||||||
|
[BZ #14516]
|
||||||
|
* sysdeps/unix/sysv/linux/ttyname.c (ttyname): Don't return
|
||||||
|
failure if reading from procfs failed.
|
||||||
|
* sysdeps/unix/sysv/linux/ttyname_r.c (ttyname_r): Likewise.
|
||||||
|
|
||||||
2012-08-27 Joseph Myers <joseph@codesourcery.com>
|
2012-08-27 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/kernel-features.h
|
* sysdeps/unix/sysv/linux/kernel-features.h
|
||||||
|
6
NEWS
6
NEWS
@ -12,7 +12,7 @@ Version 2.17
|
|||||||
3479, 5400, 6778, 6808, 9685, 11607, 13717, 13696, 13939, 14042, 14090,
|
3479, 5400, 6778, 6808, 9685, 11607, 13717, 13696, 13939, 14042, 14090,
|
||||||
14166, 14150, 14151, 14154, 14157, 14166, 14173, 14195, 14252, 14283,
|
14166, 14150, 14151, 14154, 14157, 14166, 14173, 14195, 14252, 14283,
|
||||||
14298, 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14459,
|
14298, 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14459,
|
||||||
14505, 14519
|
14505, 14516, 14519
|
||||||
|
|
||||||
* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
|
* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
|
||||||
Optimized versions of memcpy, memset, and memcmp added for System z10 and
|
Optimized versions of memcpy, memset, and memcmp added for System z10 and
|
||||||
@ -40,6 +40,10 @@ Version 2.17
|
|||||||
New configure option --disable-build-nscd avoids building nscd itself;
|
New configure option --disable-build-nscd avoids building nscd itself;
|
||||||
this is the default if --disable-nscd is used.
|
this is the default if --disable-nscd is used.
|
||||||
|
|
||||||
|
* The ttyname and ttyname_r functions on Linux now fall back to searching for
|
||||||
|
the tty file descriptor in /dev/pts or /dev if /proc is not available. This
|
||||||
|
allows creation of chroots without the procfs mounted on /proc.
|
||||||
|
|
||||||
|
|
||||||
Version 2.16
|
Version 2.16
|
||||||
|
|
||||||
|
@ -148,12 +148,6 @@ ttyname (int fd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ssize_t len = __readlink (procname, ttyname_buf, buflen);
|
ssize_t len = __readlink (procname, ttyname_buf, buflen);
|
||||||
if (__builtin_expect (len == -1 && errno == ENOENT, 0))
|
|
||||||
{
|
|
||||||
__set_errno (EBADF);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__builtin_expect (len != -1, 1))
|
if (__builtin_expect (len != -1, 1))
|
||||||
{
|
{
|
||||||
if ((size_t) len >= buflen)
|
if ((size_t) len >= buflen)
|
||||||
|
@ -128,12 +128,6 @@ __ttyname_r (int fd, char *buf, size_t buflen)
|
|||||||
*_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0';
|
*_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0';
|
||||||
|
|
||||||
ssize_t ret = __readlink (procname, buf, buflen - 1);
|
ssize_t ret = __readlink (procname, buf, buflen - 1);
|
||||||
if (__builtin_expect (ret == -1 && errno == ENOENT, 0))
|
|
||||||
{
|
|
||||||
__set_errno (EBADF);
|
|
||||||
return EBADF;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__builtin_expect (ret == -1 && errno == ENAMETOOLONG, 0))
|
if (__builtin_expect (ret == -1 && errno == ENAMETOOLONG, 0))
|
||||||
{
|
{
|
||||||
__set_errno (ERANGE);
|
__set_errno (ERANGE);
|
||||||
|
Loading…
Reference in New Issue
Block a user