diff --git a/src/cairo-egl-context.c b/src/cairo-egl-context.c index ec238526d..00bfcbf98 100644 --- a/src/cairo-egl-context.c +++ b/src/cairo-egl-context.c @@ -218,6 +218,9 @@ cairo_gl_surface_create_for_egl (cairo_device_t *device, if (device->backend->type != CAIRO_DEVICE_TYPE_GL) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + if (width <= 0 || height <= 0) + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); + surface = calloc (1, sizeof (cairo_egl_surface_t)); if (unlikely (surface == NULL)) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); diff --git a/src/cairo-glx-context.c b/src/cairo-glx-context.c index f89fa32ca..512bee8da 100644 --- a/src/cairo-glx-context.c +++ b/src/cairo-glx-context.c @@ -265,6 +265,9 @@ cairo_gl_surface_create_for_window (cairo_device_t *device, if (device->backend->type != CAIRO_DEVICE_TYPE_GL) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + if (width <= 0 || height <= 0) + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); + surface = calloc (1, sizeof (cairo_glx_surface_t)); if (unlikely (surface == NULL)) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); diff --git a/src/cairo-wgl-context.c b/src/cairo-wgl-context.c index 82f12110d..487237446 100644 --- a/src/cairo-wgl-context.c +++ b/src/cairo-wgl-context.c @@ -246,6 +246,9 @@ cairo_gl_surface_create_for_dc (cairo_device_t *device, if (device->backend->type != CAIRO_DEVICE_TYPE_GL) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + if (width <= 0 || height <= 0) + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); + surface = calloc (1, sizeof (cairo_wgl_surface_t)); if (unlikely (surface == NULL)) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));