shm: Check width, height and stride for invalid values
This commit is contained in:
parent
0fe0eb330c
commit
f9edadf3f2
@ -97,9 +97,9 @@ shm_create_buffer(struct wl_client *client, struct wl_shm *shm,
|
||||
struct wlsc_compositor, shm);
|
||||
struct wlsc_shm_buffer *buffer;
|
||||
|
||||
/* FIXME: Define a real exception event instead of abusing the
|
||||
* display.invalid_object error */
|
||||
if (visual->object.interface != &wl_visual_interface) {
|
||||
/* FIXME: Define a real exception event instead of
|
||||
* abusing this one */
|
||||
wl_client_post_event(client,
|
||||
(struct wl_object *) compositor->wl_display,
|
||||
WL_DISPLAY_INVALID_OBJECT, 0);
|
||||
@ -108,6 +108,16 @@ shm_create_buffer(struct wl_client *client, struct wl_shm *shm,
|
||||
return;
|
||||
}
|
||||
|
||||
if (width < 0 || height < 0 || stride < width) {
|
||||
wl_client_post_event(client,
|
||||
(struct wl_object *) compositor->wl_display,
|
||||
WL_DISPLAY_INVALID_OBJECT, 0);
|
||||
fprintf(stderr,
|
||||
"invalid width, height or stride in create_buffer\n");
|
||||
close(fd);
|
||||
return;
|
||||
}
|
||||
|
||||
buffer = malloc(sizeof *buffer);
|
||||
if (buffer == NULL) {
|
||||
close(fd);
|
||||
|
Loading…
Reference in New Issue
Block a user