diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2010-03-14 23:31:23 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2010-03-14 23:31:23 +0000 |
commit | 48dd72005e879336ea2439fb3422296be664cc76 (patch) | |
tree | ab5030e190b2fc36ad256debe4bc2621261d2b22 | |
parent | 7bc3f5dd8ac2d867df39225a4e2dda51b725c390 (diff) | |
download | rtmux-48dd72005e879336ea2439fb3422296be664cc76.tar.gz rtmux-48dd72005e879336ea2439fb3422296be664cc76.tar.bz2 rtmux-48dd72005e879336ea2439fb3422296be664cc76.zip |
Fix a use-after-free when cancelling copy mode, or trying to repeat cancel.
ok kettenis
-rw-r--r-- | window-copy.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/window-copy.c b/window-copy.c index 17fc792b..c27b1821 100644 --- a/window-copy.c +++ b/window-copy.c @@ -256,9 +256,8 @@ window_copy_key(struct window_pane *wp, struct client *c, int key) cmd = mode_key_lookup(&data->mdata, key); switch (cmd) { case MODEKEYCOPY_CANCEL: - for (; np != 0; np--) - window_pane_reset_mode(wp); - break; + window_pane_reset_mode(wp); + return; case MODEKEYCOPY_LEFT: for (; np != 0; np--) window_copy_cursor_left(wp); @@ -366,6 +365,7 @@ window_copy_key(struct window_pane *wp, struct client *c, int key) if (c != NULL && c->session != NULL) { window_copy_copy_selection(wp, c); window_pane_reset_mode(wp); + return; } break; case MODEKEYCOPY_STARTOFLINE: |