compositor: raise errors when bad scale or transform values are used
diff --git a/src/compositor.c b/src/compositor.c
index 574db2d..3c5c8e3 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2138,6 +2138,16 @@
 {
 	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 @@
 {
 	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;
 }