Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <4D107104-6B65-4A82-9662-A8392B56B744@gmail.com>
Date: Tue, 26 Nov 2024 11:03:36 +0100
From: Gil Pedersen <kanongil@...il.com>
To: Rich Felker <dalias@...c.org>
Cc: musl@...ts.openwall.com
Subject: Re: bug: isatty() can return wrong value

> On 20 Aug 2024, at 13.11, Rich Felker <dalias@...c.org> wrote:
> 
> What guarantee do we have that nothing other than a tty in this state
> will return EIO for the ioctl? The implementation on the kernel side
> suggests that, if they tried to put any other device in such a state
> by replacing its ioctl function the same way, it would also give EIO
> for these ioctls.

Yeah, EIO is unconditionally signalled for any (expect TIOCSPGRP) ioctl call when a tty is hung.
While a TIOCGWINSZ ioctl call that returns EIO will very likely be a tty, there is indeed no such guarantee.

> I'm hopeful there's some good fix here where we don't have to have
> either of these bad behaviors, but returning true for isatty() of a
> device that is absolutely not a tty is a much worse behavior than
> returning false for a device that is/was a tty when it was opened but
> that's been replaced by the kernel with a defunct device.

I have proposed a change to the ioctl handling in the kernel:

https://lore.kernel.org/linux-serial/20241121111506.4717-1-gpdev@gpost.dk/

If merged, the issue should be fixed going forward.

/Gil
Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.