-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash in put_wc #74
Comments
Closed
How did you get the core dump info? |
phillid
added a commit
to phillid/dvtm
that referenced
this issue
Jun 19, 2021
vt_resize resizes both buffers of the given Vt* (involving a realloc), but can only correctly clamp the cursor of the active buffer. This means that when it comes time to switch to the other buffer in interpret_csi_priv_mode, we might be switching to a buffer which has a cursor pointing to old memory. Thus, when we switch buffers it's necessary to ensure the cursor is clamped to avoid memory errors. This is a bug I've observed for a few years but never often enough to worry me. After I was able to pin it down to activities such as opening of manpages and resizing terminals, I boiled it down to be reproducible as: 1. Open a manpage in dvtm, buffer swap to alt 2. Close the manpage and return to the shell, buffer swaps to norm 3. Resize the pane to have fewer rows than before, alt+norm are resized but only norm has its cursor clamped 4. Open a manpage again, UAF causes crash since unclamped curs_row on alt buffer is still pointing to before-resize allocation With some exploratory testing I have seen crashes identical and nearly identical to the following fixed by this patch: * martanne#73 * martanne#74
owm111
pushed a commit
to owm111/dvtm
that referenced
this issue
May 27, 2022
vt_resize resizes both buffers of the given Vt* (involving a realloc), but can only correctly clamp the cursor of the active buffer. This means that when it comes time to switch to the other buffer in interpret_csi_priv_mode, we might be switching to a buffer which has a cursor pointing to old memory. Thus, when we switch buffers it's necessary to ensure the cursor is clamped to avoid memory errors. This is a bug I've observed for a few years but never often enough to worry me. After I was able to pin it down to activities such as opening of manpages and resizing terminals, I boiled it down to be reproducible as: 1. Open a manpage in dvtm, buffer swap to alt 2. Close the manpage and return to the shell, buffer swaps to norm 3. Resize the pane to have fewer rows than before, alt+norm are resized but only norm has its cursor clamped 4. Open a manpage again, UAF causes crash since unclamped curs_row on alt buffer is still pointing to before-resize allocation With some exploratory testing I have seen crashes identical and nearly identical to the following fixed by this patch: * martanne#73 * martanne#74
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Another sporadic crash. Last time it happened when I ran
git diff
in one of the active windows, but I don't know what could cause that.Core dump info:
Tried to debug it with
gdb
and found that the problem happened indvtm/vt.c
line1393
, and thatb->curs_row->cells
was0x2000000000
which is obviously not the correct memory address.The text was updated successfully, but these errors were encountered: