Commit bfd74f40 authored by Bryce W. Harrington's avatar Bryce W. Harrington Committed by Kristian H. Kristensen

Check zalloc return for out of memory situation

Most zalloc calls in weston are checked, this fixes a handful that were
being ignored.  As found by `grep -EIsr "[^x]zalloc\(" . -A1`
Signed-off-by: default avatarBryce Harrington <b.harrington@samsung.com>
parent 4c3661fd
......@@ -256,6 +256,12 @@ wayland_output_get_shm_buffer(struct wayland_output *output)
}
sb = zalloc(sizeof *sb);
if (sb == NULL) {
weston_log("could not zalloc %ld memory for sb: %m\n", sizeof *sb);
close(fd);
free(data);
return NULL;
}
sb->output = output;
wl_list_init(&sb->free_link);
......
......@@ -330,9 +330,9 @@ udev_seat_create(struct udev_input *input, const char *seat_name)
struct udev_seat *seat;
seat = zalloc(sizeof *seat);
if (!seat)
return NULL;
weston_seat_init(&seat->base, c, seat_name);
seat->base.led_update = udev_seat_led_update;
......
......@@ -449,6 +449,17 @@ weston_recorder_frame_notify(struct wl_listener *listener, void *data)
weston_recorder_destroy(recorder);
}
static void
weston_recorder_free(struct weston_recorder *recorder)
{
if (recorder == NULL)
return;
free(recorder->rect);
free(recorder->tmpbuf);
free(recorder->frame);
free(recorder);
}
static void
weston_recorder_create(struct weston_output *output, const char *filename)
{
......@@ -461,7 +472,6 @@ weston_recorder_create(struct weston_output *output, const char *filename)
do_yflip = !!(compositor->capabilities & WESTON_CAP_CAPTURE_YFLIP);
recorder = malloc(sizeof *recorder);
if (recorder == NULL) {
weston_log("%s: out of memory\n", __func__);
return;
......@@ -476,6 +486,12 @@ weston_recorder_create(struct weston_output *output, const char *filename)
recorder->destroying = 0;
recorder->output = output;
if ((recorder->frame == NULL) || (recorder->rect == NULL)) {
weston_log("%s: out of memory\n", __func__);
weston_recorder_free(recorder);
return;
}
if (do_yflip)
recorder->tmpbuf = NULL;
else
......@@ -493,10 +509,7 @@ weston_recorder_create(struct weston_output *output, const char *filename)
break;
default:
weston_log("unknown recorder format\n");
free(recorder->rect);
free(recorder->tmpbuf);
free(recorder->frame);
free(recorder);
weston_recorder_free(recorder);
return;
}
......@@ -505,10 +518,7 @@ weston_recorder_create(struct weston_output *output, const char *filename)
if (recorder->fd < 0) {
weston_log("problem opening output file %s: %m\n", filename);
free(recorder->rect);
free(recorder->tmpbuf);
free(recorder->frame);
free(recorder);
weston_recorder_free(recorder);
return;
}
......@@ -527,11 +537,8 @@ weston_recorder_destroy(struct weston_recorder *recorder)
{
wl_list_remove(&recorder->frame_listener.link);
close(recorder->fd);
free(recorder->tmpbuf);
free(recorder->frame);
free(recorder->rect);
recorder->output->disable_planes--;
free(recorder);
weston_recorder_free(recorder);
}
static void
......
......@@ -373,9 +373,9 @@ udev_seat_create(struct udev_input *input, const char *seat_name)
struct udev_seat *seat;
seat = zalloc(sizeof *seat);
if (!seat)
return NULL;
weston_seat_init(&seat->base, c, seat_name);
seat->base.led_update = drm_led_update;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment