From d238cc9f56d44061db1a92373d71f4c1f503b3e4 Mon Sep 17 00:00:00 2001 From: emersion Date: Fri, 15 Feb 2019 00:50:18 +0100 Subject: [PATCH] surface: error out on invalid transform --- types/wlr_surface.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/types/wlr_surface.c b/types/wlr_surface.c index 148b434d..de63bdae 100644 --- a/types/wlr_surface.c +++ b/types/wlr_surface.c @@ -450,15 +450,20 @@ static void surface_commit(struct wl_client *client, } static void surface_set_buffer_transform(struct wl_client *client, - struct wl_resource *resource, int transform) { + struct wl_resource *resource, int32_t transform) { + if (transform < WL_OUTPUT_TRANSFORM_NORMAL || + transform > WL_OUTPUT_TRANSFORM_FLIPPED_270) { + wl_resource_post_error(resource, WL_SURFACE_ERROR_INVALID_TRANSFORM, + "Specified transform value (%d) is invalid", transform); + return; + } struct wlr_surface *surface = wlr_surface_from_resource(resource); surface->pending.committed |= WLR_SURFACE_STATE_TRANSFORM; surface->pending.transform = transform; } static void surface_set_buffer_scale(struct wl_client *client, - struct wl_resource *resource, - int32_t scale) { + struct wl_resource *resource, int32_t scale) { if (scale <= 0) { wl_resource_post_error(resource, WL_SURFACE_ERROR_INVALID_SCALE, "Specified scale value (%d) is not positive", scale);