diff options
author | nicm <nicm> | 2015-04-07 13:06:22 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-04-07 13:06:22 +0000 |
commit | 6920be311b276277ad7c38a96ccca4746b94bd95 (patch) | |
tree | 548a3c7fec74796d1736e47bf6b4944f94e4f816 | |
parent | 3aa72b42b2a317b0ae531219d269f2a636d6482a (diff) | |
download | rtmux-6920be311b276277ad7c38a96ccca4746b94bd95.tar.gz rtmux-6920be311b276277ad7c38a96ccca4746b94bd95.tar.bz2 rtmux-6920be311b276277ad7c38a96ccca4746b94bd95.zip |
When replacing, don't free the old paste until after the new one's name
has been copied. Fixes a use-after-free in window-copy.c. Bug reported
by J Raynor (who also provided a different fix).
-rw-r--r-- | paste.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -247,9 +247,6 @@ paste_set(char *data, size_t size, const char *name, char **cause) return (-1); } - pb = paste_get_name(name); - if (pb != NULL) - paste_free_name(name); pb = xmalloc(sizeof *pb); @@ -261,6 +258,9 @@ paste_set(char *data, size_t size, const char *name, char **cause) pb->automatic = 0; pb->order = paste_next_order++; + if (paste_get_name(name) != NULL) + paste_free_name(name); + RB_INSERT(paste_name_tree, &paste_by_name, pb); RB_INSERT(paste_time_tree, &paste_by_time, pb); |