Skip to content

Commit

Permalink
Avoid stealing data from an input program that uses the tty
Browse files Browse the repository at this point in the history
at startup, like sudo.
  • Loading branch information
gwsw committed May 28, 2023
1 parent fd2a746 commit c8df315
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion os.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ static int check_poll(int fd, int tty)
{
struct pollfd poller[2] = { { fd, POLLIN, 0 }, { tty, POLLIN, 0 } };
int timeout = (waiting_for_data && !(scanning_eof && follow_mode == FOLLOW_NAME)) ? -1 : waiting_for_data_delay;
if (!any_data)
return (0);
poll(poller, 2, timeout);
#if LESSTEST
if (ttyin_name == NULL) /* Check for ^X only on a real tty. */
Expand All @@ -136,7 +138,7 @@ static int check_poll(int fd, int tty)
* to allow a program piping data into less to have temporary
* access to the tty (like sudo asking for a password).
*/
if (any_data && (poller[0].revents & (POLLIN|POLLHUP|POLLERR)) == 0)
if ((poller[0].revents & (POLLIN|POLLHUP|POLLERR)) == 0)
/* No data available; let caller take action, then try again. */
return (READ_AGAIN);
/* There is data (or HUP/ERR) available. Safe to call read() without blocking. */
Expand Down

0 comments on commit c8df315

Please sign in to comment.