diff options
author | ael-code <tommy.ael@gmail.com> | 2018-06-26 12:53:47 +0200 |
---|---|---|
committer | ael-code <tommy.ael@gmail.com> | 2018-06-26 15:37:39 +0200 |
commit | 4550cb2b3e7e6b4242cf2a3e126b6f47bc8f2182 (patch) | |
tree | ddcd6b40ae89d26f79f2db4212fc9d6a5c2c3cac /sway/commands/output | |
parent | Merge pull request #2163 from martinetd/use-after-free (diff) | |
download | sway-4550cb2b3e7e6b4242cf2a3e126b6f47bc8f2182.tar.gz sway-4550cb2b3e7e6b4242cf2a3e126b6f47bc8f2182.tar.zst sway-4550cb2b3e7e6b4242cf2a3e126b6f47bc8f2182.zip |
fix memleak on background cmd error
- src must be free after join_args()
- wordfree must bee used after wordexp
Diffstat (limited to 'sway/commands/output')
-rw-r--r-- | sway/commands/output/background.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sway/commands/output/background.c b/sway/commands/output/background.c index 82bccf68..4f422cec 100644 --- a/sway/commands/output/background.c +++ b/sway/commands/output/background.c | |||
@@ -62,8 +62,11 @@ struct cmd_results *output_cmd_background(int argc, char **argv) { | |||
62 | wordexp_t p; | 62 | wordexp_t p; |
63 | char *src = join_args(argv, j); | 63 | char *src = join_args(argv, j); |
64 | if (wordexp(src, &p, 0) != 0 || p.we_wordv[0] == NULL) { | 64 | if (wordexp(src, &p, 0) != 0 || p.we_wordv[0] == NULL) { |
65 | return cmd_results_new(CMD_INVALID, "output", | 65 | struct cmd_results *cmd_res = cmd_results_new(CMD_INVALID, "output", |
66 | "Invalid syntax (%s).", src); | 66 | "Invalid syntax (%s)", src); |
67 | free(src); | ||
68 | wordfree(&p); | ||
69 | return cmd_res; | ||
67 | } | 70 | } |
68 | free(src); | 71 | free(src); |
69 | src = p.we_wordv[0]; | 72 | src = p.we_wordv[0]; |