mirror of
https://github.com/labwc/labwc.git
synced 2026-03-07 04:33:54 -05:00
Prevent missing direction arguments to segfault labwc
Reported-by: @Flrian
This commit is contained in:
parent
0a7e380c14
commit
986ab70780
2 changed files with 20 additions and 2 deletions
12
src/action.c
12
src/action.c
|
|
@ -174,10 +174,18 @@ actions_run(struct view *activator, struct server *server,
|
||||||
wl_display_terminate(server->wl_display);
|
wl_display_terminate(server->wl_display);
|
||||||
break;
|
break;
|
||||||
case ACTION_TYPE_MOVE_TO_EDGE:
|
case ACTION_TYPE_MOVE_TO_EDGE:
|
||||||
view_move_to_edge(view, action->arg);
|
if (action->arg) {
|
||||||
|
view_move_to_edge(view, action->arg);
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "Missing argument for MoveToEdge");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ACTION_TYPE_SNAP_TO_EDGE:
|
case ACTION_TYPE_SNAP_TO_EDGE:
|
||||||
view_snap_to_edge(view, action->arg);
|
if (action->arg) {
|
||||||
|
view_snap_to_edge(view, action->arg);
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "Missing argument for SnapToEdge");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ACTION_TYPE_NEXT_WINDOW:
|
case ACTION_TYPE_NEXT_WINDOW:
|
||||||
server->cycle_view = desktop_cycle_view(server,
|
server->cycle_view = desktop_cycle_view(server,
|
||||||
|
|
|
||||||
10
src/view.c
10
src/view.c
|
|
@ -460,6 +460,10 @@ view_move_to_edge(struct view *view, const char *direction)
|
||||||
wlr_log(WLR_ERROR, "no output");
|
wlr_log(WLR_ERROR, "no output");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!direction) {
|
||||||
|
wlr_log(WLR_ERROR, "invalid edge");
|
||||||
|
return;
|
||||||
|
}
|
||||||
struct wlr_box usable = output_usable_area_in_layout_coords(output);
|
struct wlr_box usable = output_usable_area_in_layout_coords(output);
|
||||||
if (usable.height == output->wlr_output->height
|
if (usable.height == output->wlr_output->height
|
||||||
&& output->wlr_output->scale != 1) {
|
&& output->wlr_output->scale != 1) {
|
||||||
|
|
@ -485,6 +489,9 @@ view_move_to_edge(struct view *view, const char *direction)
|
||||||
x = view->x;
|
x = view->x;
|
||||||
y = usable.y + usable.height - view->h - view->margin.bottom
|
y = usable.y + usable.height - view->h - view->margin.bottom
|
||||||
- rc.gap;
|
- rc.gap;
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "invalid edge");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
view_move(view, x, y);
|
view_move(view, x, y);
|
||||||
}
|
}
|
||||||
|
|
@ -521,6 +528,9 @@ view_edge_invert(enum view_edge edge)
|
||||||
static enum view_edge
|
static enum view_edge
|
||||||
view_edge_parse(const char *direction)
|
view_edge_parse(const char *direction)
|
||||||
{
|
{
|
||||||
|
if (!direction) {
|
||||||
|
return VIEW_EDGE_INVALID;
|
||||||
|
}
|
||||||
if (!strcasecmp(direction, "left")) {
|
if (!strcasecmp(direction, "left")) {
|
||||||
return VIEW_EDGE_LEFT;
|
return VIEW_EDGE_LEFT;
|
||||||
} else if (!strcasecmp(direction, "up")) {
|
} else if (!strcasecmp(direction, "up")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue