compositor: raise errors when bad scale or transform values are used
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Fri, 30 May 2014 10:07:15 +0000 (12:07 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Tue, 3 Jun 2014 06:19:20 +0000 (09:19 +0300)
src/compositor.c

index 574db2d..3c5c8e3 100644 (file)
@@ -2138,6 +2138,16 @@ surface_set_buffer_transform(struct wl_client *client,
 {
        struct weston_surface *surface = wl_resource_get_user_data(resource);
 
+       /* if wl_output.transform grows more members this will need to be updated. */
+       if (transform < 0 ||
+           transform > WL_OUTPUT_TRANSFORM_FLIPPED_270) {
+               wl_resource_post_error(resource,
+                       WL_SURFACE_ERROR_INVALID_TRANSFORM,
+                       "buffer transform must be a valid transform "
+                       "('%d' specified)", transform);
+               return;
+       }
+
        surface->pending.buffer_viewport.buffer.transform = transform;
 }
 
@@ -2148,6 +2158,14 @@ surface_set_buffer_scale(struct wl_client *client,
 {
        struct weston_surface *surface = wl_resource_get_user_data(resource);
 
+       if (scale < 1) {
+               wl_resource_post_error(resource,
+                       WL_SURFACE_ERROR_INVALID_SCALE,
+                       "buffer scale must be at least one "
+                       "('%d' specified)", scale);
+               return;
+       }
+
        surface->pending.buffer_viewport.buffer.scale = scale;
 }