This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On Tue, Dec 18, 2001 at 02:52:45PM +0100, Thorsten Kukuk wrote:
> @@ -16,6 +16,8 @@
> Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> 02111-1307 USA. */
>
> +#include <errno.h>
> +#include <fcntl.h>
> #include <limits.h>
> #include <stdlib.h>
> #include <sys/statfs.h>
> @@ -45,8 +47,20 @@
> #endif
> char *buf = _buf;
>
> - if (pts_name (fd, &buf, sizeof (_buf)))
> + /* Check, if the file descriptor is valid. pts_name returns the
> + wrong errno number, so we cannot use that. */
> + if (__builtin_expect (__libc_fcntl (fd, F_GETFD), 0) == -1
> + && errno == EBADF)
> return -1;
> +
> + if (pts_name (fd, &buf, sizeof (_buf)))
> + {
> + /* If the filedescriptor is no TTY, grantpt has to set errno
> + to EINVAL. */
> + if (errno == ENOTTY)
> + __set_errno (EINVAL);
> + return -1;
> + }
Cannot the
> + if (__builtin_expect (__libc_fcntl (fd, F_GETFD), 0) == -1
> + && errno == EBADF)
test be done only if pts_name failed, so that apps passing correct file
descriptors are not punished?
(saving/restoring errno around it).
Jakub
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |