diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2018-06-30 22:05:27 +0900 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2018-07-02 08:03:41 +0900 |
commit | 5690bea22745789ada70ba8b4814f2e15ee23bd2 (patch) | |
tree | 874fccaf3ace6ed00527d7e74df6317705b039b1 /sway/commands/input/map_from_region.c | |
parent | ipc-server: fix more use-after-frees on ipc_send_reply error (diff) | |
download | sway-5690bea22745789ada70ba8b4814f2e15ee23bd2.tar.gz sway-5690bea22745789ada70ba8b4814f2e15ee23bd2.tar.zst sway-5690bea22745789ada70ba8b4814f2e15ee23bd2.zip |
input_config: free new_input_config on error
Found through static analysis.
Diffstat (limited to 'sway/commands/input/map_from_region.c')
-rw-r--r-- | sway/commands/input/map_from_region.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sway/commands/input/map_from_region.c b/sway/commands/input/map_from_region.c index 80bb856d..40f04214 100644 --- a/sway/commands/input/map_from_region.c +++ b/sway/commands/input/map_from_region.c | |||
@@ -54,20 +54,28 @@ struct cmd_results *input_cmd_map_from_region(int argc, char **argv) { | |||
54 | bool mm1, mm2; | 54 | bool mm1, mm2; |
55 | if (!parse_coords(argv[0], &new_config->mapped_from_region->x1, | 55 | if (!parse_coords(argv[0], &new_config->mapped_from_region->x1, |
56 | &new_config->mapped_from_region->y1, &mm1)) { | 56 | &new_config->mapped_from_region->y1, &mm1)) { |
57 | free(new_config->mapped_from_region); | ||
58 | free_input_config(new_config); | ||
57 | return cmd_results_new(CMD_FAILURE, "map_from_region", | 59 | return cmd_results_new(CMD_FAILURE, "map_from_region", |
58 | "Invalid top-left coordinates"); | 60 | "Invalid top-left coordinates"); |
59 | } | 61 | } |
60 | if (!parse_coords(argv[1], &new_config->mapped_from_region->x2, | 62 | if (!parse_coords(argv[1], &new_config->mapped_from_region->x2, |
61 | &new_config->mapped_from_region->y2, &mm2)) { | 63 | &new_config->mapped_from_region->y2, &mm2)) { |
64 | free(new_config->mapped_from_region); | ||
65 | free_input_config(new_config); | ||
62 | return cmd_results_new(CMD_FAILURE, "map_from_region", | 66 | return cmd_results_new(CMD_FAILURE, "map_from_region", |
63 | "Invalid bottom-right coordinates"); | 67 | "Invalid bottom-right coordinates"); |
64 | } | 68 | } |
65 | if (new_config->mapped_from_region->x1 > new_config->mapped_from_region->x2 || | 69 | if (new_config->mapped_from_region->x1 > new_config->mapped_from_region->x2 || |
66 | new_config->mapped_from_region->y1 > new_config->mapped_from_region->y2) { | 70 | new_config->mapped_from_region->y1 > new_config->mapped_from_region->y2) { |
71 | free(new_config->mapped_from_region); | ||
72 | free_input_config(new_config); | ||
67 | return cmd_results_new(CMD_FAILURE, "map_from_region", | 73 | return cmd_results_new(CMD_FAILURE, "map_from_region", |
68 | "Invalid rectangle"); | 74 | "Invalid rectangle"); |
69 | } | 75 | } |
70 | if (mm1 != mm2) { | 76 | if (mm1 != mm2) { |
77 | free(new_config->mapped_from_region); | ||
78 | free_input_config(new_config); | ||
71 | return cmd_results_new(CMD_FAILURE, "map_from_region", | 79 | return cmd_results_new(CMD_FAILURE, "map_from_region", |
72 | "Both coordinates must be in the same unit"); | 80 | "Both coordinates must be in the same unit"); |
73 | } | 81 | } |