From: Emilio Pozuelo Monfort <[email protected]>

The noop-renderer doesn't read buffer contents, which means bad
buffers go undetected. Thus, read the buffer contents just for
the purpose of triggering SIGBUS (and having the client killed).

Fixed bad-buffer test when run against the headless backend.

Signed-off-by: Emilio Pozuelo Monfort <[email protected]>
---
 src/noop-renderer.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/noop-renderer.c b/src/noop-renderer.c
index cf1a7f2..5da0b20 100644
--- a/src/noop-renderer.c
+++ b/src/noop-renderer.c
@@ -23,6 +23,7 @@
 #include "config.h"
 
 #include <stdlib.h>
+#include <string.h>
 
 #include "compositor.h"
 
@@ -50,15 +51,31 @@ static void
 noop_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
 {
        struct wl_shm_buffer *shm_buffer;
+       uint8_t *data;
+       uint32_t size, width, height, stride;
 
        if (!buffer)
                return;
 
        shm_buffer = wl_shm_buffer_get(buffer->resource);
 
+       data = wl_shm_buffer_get_data(shm_buffer);
+       stride = wl_shm_buffer_get_stride(shm_buffer);
+       width = wl_shm_buffer_get_width(shm_buffer);
+       height = wl_shm_buffer_get_height(shm_buffer);
+       size = stride * height;
+
+       /* Access the buffer data to make sure the buffer's client gets killed
+        * if the buffer size is invalid. This makes the bad_buffer test pass.
+        * This can be removed if we start reading the buffer contents
+        * somewhere else, e.g. in repaint_output(). */
+       wl_shm_buffer_begin_access(shm_buffer);
+       memset(data, 0, size);
+       wl_shm_buffer_end_access(shm_buffer);
+
        buffer->shm_buffer = shm_buffer;
-       buffer->width = wl_shm_buffer_get_width(shm_buffer);
-       buffer->height = wl_shm_buffer_get_height(shm_buffer);
+       buffer->width = width;
+       buffer->height = height;
 }
 
 static void
-- 
1.8.5.3

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to