Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update_view_title: Fix NULL dereference at startup
update_view_title can be called with a `struct view` where `line` is NULL, and `lines` is 0. Specifically, along this call stack: #0 update_view_title (view=0x3fdb88 <main_view>) at [...]/tig/src/view.c:690 #1 0x0000000000338018 in report_clear () at [...]/tig/src/display.c:565 #2 0x00000000003cfe5b in load_view (view=0x3fdb88 <main_view>, prev=0x3fdb88 <main_view>, flags=OPEN_ at [...]/tig/src/view.c:857 #3 0x00000000003d0bc0 in open_view (prev=0x0, view=0x3fdb88 <main_view>, flags=OPEN_DEFAULT) at [...]/tig/src/view.c:894 #4 0x00000000003b2932 in open_main_view (prev=0x0, flags=OPEN_DEFAULT) at include/tig/main.h:57 #5 0x00000000003b0cca in view_driver (view=0x0, request=REQ_VIEW_MAIN) at [...]/tig/src/tig.c:179 #6 0x00000000003af96a in main (argc=1, argv=0x7fffffffddb8) at [...]/tig/src/tig.c:864 Specifically, load_view calls report_clear when `view->lines == 0`, which calls `update_view_title`, which attempts `&view->line[...]` on a null `line`. It's not clear why this doesn't explode today. I caught it when I ran tig compiled with Zig in debug mode and it failed with an illegal instruction on the line: struct line *line = &view->line[view->pos.lineno]; Adding a check for `NULL` or `lines == 0` resolves the issue.
- Loading branch information