PTY: Disallow infinite writing to slaves.

This way we don't buffer ungodly amounts of output in the kernel when doing
e.g "cat /dev/random" on a PTY.
This commit is contained in:
Andreas Kling 2019-01-25 00:13:54 +01:00
parent d7d78670c9
commit b896d4b237
Notes: sideshowbarker 2024-07-19 15:57:37 +09:00
3 changed files with 8 additions and 2 deletions

View File

@ -45,3 +45,8 @@ void MasterPTY::on_slave_write(const byte* data, size_t size)
{
m_buffer.write(data, size);
}
bool MasterPTY::can_write_from_slave() const
{
return m_buffer.bytes_in_write_buffer() < 4096;
}

View File

@ -20,6 +20,7 @@ public:
unsigned index() const { return m_index; }
String pts_name() const;
void on_slave_write(const byte*, size_t);
bool can_write_from_slave() const;
private:
// ^CharacterDevice

View File

@ -31,7 +31,7 @@ void SlavePTY::on_tty_write(const byte* data, size_t size)
m_master.on_slave_write(data, size);
}
bool SlavePTY::can_write(Process& process) const
bool SlavePTY::can_write(Process&) const
{
return m_master.can_write(process);
return m_master.can_write_from_slave();
}