diff options
author | Robin Jarry <robin@jarry.cc> | 2024-09-29 20:33:33 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-10-22 19:44:36 +0200 |
commit | 7069217834913fb6fec338d121f1e1057cce533d (patch) | |
tree | 4c069fd9a0976cabc97e6e8164434ea06bf5d24a /commands/account/sort.go | |
parent | 29f95c68e26df5391a90068d1646a8afe8f65316 (diff) | |
download | aerc-7069217834913fb6fec338d121f1e1057cce533d.tar.gz |
viewer: avoid crashes on opening invalid messages
When an error occurs during the opening of a message because its
contents cannot be parsed, the PartSwitcher object is left to nil and
the err field is set to the reported error.
This defers the error reporting after the viewer tab is displayed but it
is not handled in all sub functions which assume that switcher cannot be
nil.
Error: runtime error: invalid memory address or nil pointer dereference
git.sr.ht/~rjarry/aerc/app.(*PartSwitcher).Show(...)
/build/aerc/src/aerc/app/partswitcher.go:77
git.sr.ht/~rjarry/aerc/app.(*MessageViewer).Show(...)
/build/aerc/src/aerc/app/msgviewer.go:409
git.sr.ht/~rjarry/aerc/lib/ui.(*Tabs).selectPriv(...)
/build/aerc/src/aerc/lib/ui/tab.go:181
git.sr.ht/~rjarry/aerc/lib/ui.(*Tabs).Add(...)
/build/aerc/src/aerc/lib/ui/tab.go:75
git.sr.ht/~rjarry/aerc/app.(*Aerc).NewTab(...)
/build/aerc/src/aerc/app/aerc.go:511
git.sr.ht/~rjarry/aerc/app.NewTab(...)
/build/aerc/src/aerc/app/app.go:61
git.sr.ht/~rjarry/aerc/commands/account.ViewMessage.Execute.func1(...)
/build/aerc/src/aerc/commands/account/view.go:71
git.sr.ht/~rjarry/aerc/lib.NewMessageStoreView.func1(...)
/build/aerc/src/aerc/lib/messageview.go:80
git.sr.ht/~rjarry/aerc/lib.NewMessageStoreView(...)
/build/aerc/src/aerc/lib/messageview.go:124
git.sr.ht/~rjarry/aerc/commands/account.ViewMessage.Execute(...)
/build/aerc/src/aerc/commands/account/view.go:52
git.sr.ht/~rjarry/aerc/commands.ExecuteCommand(...)
/build/aerc/src/aerc/commands/commands.go:205
main.execCommand(...)
Remove that private err field and return an explicit error when the
message cannot be opened to enforce handling of the error by the caller.
When the msg argument is nil (only used in split viewer), return an
empty message viewer object and ensure that all code paths that read the
switcher or msg fields perform a nil check before accessing it.
Link: https://lists.sr.ht/~rjarry/aerc-devel/%3C12c465e4-b733-4b15-b4b0-62f87429fdf7@gmail.com%3E
Link: https://lists.sr.ht/~rjarry/aerc-devel/%3C2C55CF50-A636-46E5-9BA8-FE60A2303ECA@proton.me%3E
Link: https://lists.sr.ht/~rjarry/aerc-devel/%3CD51PEB6OMNDT.1KVSX0UCNL2MB@posteo.de%3E
Reported-by: Benjamin Braun <ben.braun@posteo.de>
Reported-by: Filip <filip.sh@proton.me>
Reported-by: Sarthak Bhan <sbstratos79@gmail.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'commands/account/sort.go')
0 files changed, 0 insertions, 0 deletions