aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoni Marti <koni.marti@gmail.com>2022-01-19 21:32:31 +0100
committerRobin Jarry <robin@jarry.cc>2022-01-19 22:16:36 +0100
commit7f34cab5e57d19953d56ac63820ea153805f6bc0 (patch)
tree88c5002625c41d75c27fe9f1642e68bde749ea9e
parent22ad9e199a6dccf0f5017b3e0bacd3ad01b122e7 (diff)
downloadaerc-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.go5
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)