From be39e84875329210beae8ceda1fb83b3bc2ffc2a Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Sat, 6 Jan 2018 19:18:06 -0700 Subject: Prevent invalid free of workspace name An allocated pointer was incremented before being freed in `sway/workspace.c` which led to an invalid free. This has been fixed by keeping the pointer in place and moving the data instead. Fixes #1548 --- sway/workspace.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sway/workspace.c b/sway/workspace.c index e0367190..42525f3d 100644 --- a/sway/workspace.c +++ b/sway/workspace.c @@ -68,8 +68,9 @@ char *workspace_next_name(const char *output_name) { sway_log(L_DEBUG, "Got valid workspace command for target: '%s'", name); char *_target = strdup(name); strip_quotes(_target); - while (isspace(*_target)) - _target++; + while (isspace(*_target)) { + memmove(_target, _target+1, strlen(_target+1)); + } // Make sure that the command references an actual workspace // not a command about workspaces -- cgit v1.2.3