aboutsummaryrefslogtreecommitdiff
path: root/debug
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2019-02-03 09:37:30 +0100
committerFlorian Weimer <fweimer@redhat.com>2019-02-03 09:38:24 +0100
commitee9941f94ea838774c34f60b3397fba07a803d92 (patch)
tree082d81424de2bb74bd63f0087869c956ea437ad7 /debug
parentc70824b9a4645c0ecd049da8cfdb2c28ae7ada23 (diff)
downloadglibc-ee9941f94ea838774c34f60b3397fba07a803d92.zip
glibc-ee9941f94ea838774c34f60b3397fba07a803d92.tar.gz
glibc-ee9941f94ea838774c34f60b3397fba07a803d92.tar.bz2
libio: Use stdin consistently for input functions [BZ #24153]
The internal _IO_stdin_ variable is not updated when the application assigns to stdin, which is a GNU extension.
Diffstat (limited to 'debug')
-rw-r--r--debug/gets_chk.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/debug/gets_chk.c b/debug/gets_chk.c
index 4b5e13d..fc6557a 100644
--- a/debug/gets_chk.c
+++ b/debug/gets_chk.c
@@ -37,8 +37,8 @@ __gets_chk (char *buf, size_t size)
if (size == 0)
__chk_fail ();
- _IO_acquire_lock (_IO_stdin);
- ch = _IO_getc_unlocked (_IO_stdin);
+ _IO_acquire_lock (stdin);
+ ch = _IO_getc_unlocked (stdin);
if (ch == EOF)
{
retval = NULL;
@@ -51,24 +51,24 @@ __gets_chk (char *buf, size_t size)
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
case. We return an error only when there is a new error. */
- int old_error = _IO_stdin->_flags & _IO_ERR_SEEN;
- _IO_stdin->_flags &= ~_IO_ERR_SEEN;
+ int old_error = stdin->_flags & _IO_ERR_SEEN;
+ stdin->_flags &= ~_IO_ERR_SEEN;
buf[0] = (char) ch;
- count = _IO_getline (_IO_stdin, buf + 1, size - 1, '\n', 0) + 1;
- if (_IO_stdin->_flags & _IO_ERR_SEEN)
+ count = _IO_getline (stdin, buf + 1, size - 1, '\n', 0) + 1;
+ if (stdin->_flags & _IO_ERR_SEEN)
{
retval = NULL;
goto unlock_return;
}
else
- _IO_stdin->_flags |= old_error;
+ stdin->_flags |= old_error;
}
if (count >= size)
__chk_fail ();
buf[count] = 0;
retval = buf;
unlock_return:
- _IO_release_lock (_IO_stdin);
+ _IO_release_lock (stdin);
return retval;
}