diff --git a/tests/internal-screenshot-test.c b/tests/internal-screenshot-test.c index b5707336..f2e6c16b 100644 --- a/tests/internal-screenshot-test.c +++ b/tests/internal-screenshot-test.c @@ -75,6 +75,7 @@ load_surface_from_png(const char *fname) { cairo_surface_t *reference_cairo_surface; cairo_status_t status; size_t source_data_size; + int bpp; int stride; printf("Loading reference image %s\n", fname); @@ -98,6 +99,15 @@ load_surface_from_png(const char *fname) { stride = cairo_image_surface_get_stride(reference_cairo_surface); source_data_size = stride * reference->height; + /* Check that the file's stride matches our assumption */ + bpp = 4; + if (stride != bpp * reference->width) { + printf("Mismatched stride for screenshot reference image %s\n", fname); + cairo_surface_destroy(reference_cairo_surface); + free(reference); + return NULL; + } + /* Allocate new buffer for our weston reference, and copy the data from the cairo surface so we can destroy it */ reference->data = xzalloc(source_data_size);