mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-04 13:29:51 -05:00
shm: Check width, height and stride for invalid values
This commit is contained in:
parent
0fe0eb330c
commit
f9edadf3f2
1 changed files with 12 additions and 2 deletions
|
|
@ -97,9 +97,9 @@ shm_create_buffer(struct wl_client *client, struct wl_shm *shm,
|
||||||
struct wlsc_compositor, shm);
|
struct wlsc_compositor, shm);
|
||||||
struct wlsc_shm_buffer *buffer;
|
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) {
|
if (visual->object.interface != &wl_visual_interface) {
|
||||||
/* FIXME: Define a real exception event instead of
|
|
||||||
* abusing this one */
|
|
||||||
wl_client_post_event(client,
|
wl_client_post_event(client,
|
||||||
(struct wl_object *) compositor->wl_display,
|
(struct wl_object *) compositor->wl_display,
|
||||||
WL_DISPLAY_INVALID_OBJECT, 0);
|
WL_DISPLAY_INVALID_OBJECT, 0);
|
||||||
|
|
@ -108,6 +108,16 @@ shm_create_buffer(struct wl_client *client, struct wl_shm *shm,
|
||||||
return;
|
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);
|
buffer = malloc(sizeof *buffer);
|
||||||
if (buffer == NULL) {
|
if (buffer == NULL) {
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue