Do not read more than 10K characters from /dev/tty

This might help with #1456 where fzf hangs consuming CPU resources.
This commit is contained in:
Junegunn Choi 2020-03-07 11:20:44 +09:00
parent d9c6a0305b
commit ba82f0bef9
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627

View File

@ -23,6 +23,7 @@ const (
defaultEscDelay = 100
escPollInterval = 5
offsetPollTries = 10
maxInputBuffer = 10 * 1024
)
const consoleDevice string = "/dev/tty"
@ -317,6 +318,13 @@ func (r *LightRenderer) getBytesInternal(buffer []byte, nonblock bool) []byte {
}
buffer = append(buffer, byte(c))
pc = c
// This should never happen under normal conditions,
// so terminate fzf immediately.
if len(buffer) > maxInputBuffer {
r.Close()
panic(fmt.Sprintf("Input buffer overflow (%d): %v", len(buffer), buffer))
}
}
return buffer