commit a3e574f63ffdf34b1bc21620be3d065cee1ea54b
parent b300bace0f1da0fe19336ad8b3a70802fc49a57a
Author: Di Ma <focus64@gmail.com>
Date: Sun, 22 Mar 2020 15:21:51 -0700
Fix a use-after-free error in switch binding
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sway/input/switch.c b/sway/input/switch.c
@@ -1,8 +1,10 @@
+#define _POSIX_C_SOURCE 200809L
#include "sway/config.h"
#include "sway/desktop/transaction.h"
#include "sway/input/switch.h"
#include <wlr/types/wlr_idle.h>
#include "log.h"
+#include <string.h>
struct sway_switch *sway_switch_create(struct sway_seat *seat,
struct sway_seat_device *device) {
@@ -56,7 +58,7 @@ static void execute_binding(struct sway_switch *sway_switch) {
calloc(1, sizeof(struct sway_binding));
dummy_binding->type = BINDING_SWITCH;
dummy_binding->flags = matched_binding->flags;
- dummy_binding->command = matched_binding->command;
+ dummy_binding->command = strdup(matched_binding->command);
seat_execute_command(seat, dummy_binding);
free(dummy_binding);