diff options
author | Koni Marti <koni.marti@gmail.com> | 2022-01-19 21:32:31 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-01-19 22:16:36 +0100 |
commit | 7f34cab5e57d19953d56ac63820ea153805f6bc0 (patch) | |
tree | 88c5002625c41d75c27fe9f1642e68bde749ea9e | |
parent | 22ad9e199a6dccf0f5017b3e0bacd3ad01b122e7 (diff) | |
download | aerc-7f34cab5e57d19953d56ac63820ea153805f6bc0.tar.gz |
terminal: fix nil pointer dereference in pty.Getsize
pty.Getsize() is used in the Draw function of the terminal widget and wraps the
pty.GetsizeFull() function. However, pty.Getsize does not check the returned
error from pty.GetsizeFull before dereferencing the winsize struct. In case of
an error, this will cause a nil pointer deference and panic.
This has been reported in the upstream package, but in the meantime, we can
directly use pty.GetsizeFull.
References: https://todo.sr.ht/~rjarry/aerc/11
Signed-off-by: Koni Marti <koni.marti@gmail.com>
-rw-r--r-- | widgets/terminal.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/widgets/terminal.go b/widgets/terminal.go index 68c95534..b6e8fc0e 100644 --- a/widgets/terminal.go +++ b/widgets/terminal.go @@ -254,10 +254,13 @@ func (term *Terminal) Draw(ctx *ui.Context) { } } - rows, cols, err := pty.Getsize(term.pty) + ws, err := pty.GetsizeFull(term.pty) if err != nil { return } + rows := int(ws.Rows) + cols := int(ws.Cols) + if ctx.Width() != cols || ctx.Height() != rows { term.writeMutex.Lock() pty.Setsize(term.pty, &winsize) |