Abort if zalloc ever fails

There's no guarantee that libinput does the right thing if memory allocation
fails and it's such a niche case on the systems we're targeting that it just
doesn't matter. Simply abort if zalloc ever fails.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2017-07-07 09:42:59 +10:00
parent 26225f11df
commit d5d6d4cd53
15 changed files with 19 additions and 117 deletions

View file

@ -297,11 +297,9 @@ struct evdev_dispatch_interface lid_switch_interface = {
struct evdev_dispatch *
evdev_lid_switch_dispatch_create(struct evdev_device *lid_device)
{
struct lid_switch_dispatch *dispatch = zalloc(sizeof *dispatch);
if (dispatch == NULL)
return NULL;
struct lid_switch_dispatch *dispatch;
dispatch = zalloc(sizeof *dispatch);
dispatch->base.dispatch_type = DISPATCH_LID_SWITCH;
dispatch->base.interface = &lid_switch_interface;
dispatch->device = lid_device;

View file

@ -2797,8 +2797,6 @@ evdev_mt_touchpad_create(struct evdev_device *device)
evdev_tag_touchpad(device, device->udev_device);
tp = zalloc(sizeof *tp);
if (!tp)
return NULL;
if (!tp_init(tp, device)) {
tp_interface_destroy(&tp->base);

View file

@ -59,9 +59,6 @@ pad_mode_toggle_button_new(struct pad_dispatch *pad,
struct pad_mode_toggle_button *button;
button = zalloc(sizeof *button);
if (!button)
return NULL;
button->button_index = button_index;
return button;
@ -121,9 +118,6 @@ pad_led_new(struct libinput *libinput, const char *prefix, int group, int mode)
int rc, fd;
led = zalloc(sizeof *led);
if (!led)
return NULL;
led->brightness_fd = -1;
led->mode_idx = mode;
list_init(&led->link);
@ -178,9 +172,6 @@ pad_group_new_basic(struct pad_dispatch *pad,
struct pad_led_group *group;
group = zalloc(sizeof *group);
if (!group)
return NULL;
group->base.device = &pad->device->base;
group->base.refcount = 1;
group->base.index = group_index;

View file

@ -628,8 +628,6 @@ evdev_tablet_pad_create(struct evdev_device *device)
struct pad_dispatch *pad;
pad = zalloc(sizeof *pad);
if (!pad)
return NULL;
if (pad_init(pad, device) != 0) {
pad_destroy(&pad->base);

View file

@ -1035,8 +1035,7 @@ tablet_get_tool(struct tablet_dispatch *tablet,
const struct input_absinfo *pressure;
tool = zalloc(sizeof *tool);
if (!tool)
return NULL;
*tool = (struct libinput_tablet_tool) {
.type = type,
.serial = serial,
@ -1932,8 +1931,6 @@ evdev_tablet_create(struct evdev_device *device)
struct tablet_dispatch *tablet;
tablet = zalloc(sizeof *tablet);
if (!tablet)
return NULL;
if (tablet_init(tablet, device) != 0) {
tablet_destroy(&tablet->base);

View file

@ -1837,12 +1837,10 @@ fallback_dispatch_init_abs(struct fallback_dispatch *dispatch,
static struct evdev_dispatch *
fallback_dispatch_create(struct libinput_device *libinput_device)
{
struct fallback_dispatch *dispatch = zalloc(sizeof *dispatch);
struct evdev_device *device = evdev_device(libinput_device);
struct fallback_dispatch *dispatch;
if (dispatch == NULL)
return NULL;
dispatch = zalloc(sizeof *dispatch);
dispatch->base.dispatch_type = DISPATCH_FALLBACK;
dispatch->base.interface = &fallback_interface;
dispatch->pending_event = EVDEV_NONE;
@ -2936,8 +2934,6 @@ evdev_device_create(struct libinput_seat *seat,
goto err;
device = zalloc(sizeof *device);
if (device == NULL)
goto err;
libinput_device_init(&device->base, seat);
libinput_seat_ref(seat);

View file

@ -951,9 +951,6 @@ create_default_filter(int dpi)
struct pointer_accelerator *filter;
filter = zalloc(sizeof *filter);
if (filter == NULL)
return NULL;
filter->last_velocity = 0.0;
filter->trackers =
@ -1050,9 +1047,6 @@ create_pointer_accelerator_filter_lenovo_x230(int dpi)
struct pointer_accelerator *filter;
filter = zalloc(sizeof *filter);
if (filter == NULL)
return NULL;
filter->base.interface = &accelerator_interface_x230;
filter->profile = touchpad_lenovo_x230_accel_profile;
filter->last_velocity = 0.0;
@ -1160,9 +1154,6 @@ create_pointer_accelerator_filter_flat(int dpi)
struct pointer_accelerator_flat *filter;
filter = zalloc(sizeof *filter);
if (filter == NULL)
return NULL;
filter->base.interface = &accelerator_interface_flat;
filter->dpi = dpi;
@ -1284,9 +1275,6 @@ create_tablet_filter_flat(int xres, int yres)
struct tablet_accelerator_flat *filter;
filter = zalloc(sizeof *filter);
if (filter == NULL)
return NULL;
filter->factor = 1.0;
filter->xres = xres;
filter->yres = yres;

View file

@ -494,8 +494,6 @@ strv_from_string(const char *in, const char *separators)
nelems++; /* NULL-terminated */
strv = zalloc(nelems * sizeof *strv);
if (!strv)
return NULL;
idx = 0;

View file

@ -136,7 +136,13 @@ bool list_empty(const struct list *list);
static inline void *
zalloc(size_t size)
{
return calloc(1, size);
void *p;
p = calloc(1, size);
if (!p)
abort();
return p;
}
/* This bitfield helper implementation is taken from from libevdev-util.h,

View file

@ -1648,9 +1648,6 @@ libinput_add_fd(struct libinput *libinput,
struct epoll_event ep;
source = zalloc(sizeof *source);
if (!source)
return NULL;
source->dispatch = dispatch;
source->user_data = user_data;
source->fd = fd;
@ -1691,11 +1688,6 @@ libinput_init(struct libinput *libinput,
libinput->events_len = 4;
libinput->events = zalloc(libinput->events_len * sizeof(*libinput->events));
if (!libinput->events) {
close(libinput->epoll_fd);
return -1;
}
libinput->log_handler = libinput_default_log_func;
libinput->log_priority = LIBINPUT_LOG_PRIORITY_ERROR;
libinput->interface = interface;
@ -2121,8 +2113,6 @@ notify_added_device(struct libinput_device *device)
struct libinput_event_device_notify *added_device_event;
added_device_event = zalloc(sizeof *added_device_event);
if (!added_device_event)
return;
post_base_event(device,
LIBINPUT_EVENT_DEVICE_ADDED,
@ -2135,8 +2125,6 @@ notify_removed_device(struct libinput_device *device)
struct libinput_event_device_notify *removed_device_event;
removed_device_event = zalloc(sizeof *removed_device_event);
if (!removed_device_event)
return;
post_base_event(device,
LIBINPUT_EVENT_DEVICE_REMOVED,
@ -2197,8 +2185,6 @@ keyboard_notify_key(struct libinput_device *device,
return;
key_event = zalloc(sizeof *key_event);
if (!key_event)
return;
seat_key_count = update_seat_key_count(device->seat, key, state);
@ -2226,8 +2212,6 @@ pointer_notify_motion(struct libinput_device *device,
return;
motion_event = zalloc(sizeof *motion_event);
if (!motion_event)
return;
*motion_event = (struct libinput_event_pointer) {
.time = time,
@ -2251,8 +2235,6 @@ pointer_notify_motion_absolute(struct libinput_device *device,
return;
motion_absolute_event = zalloc(sizeof *motion_absolute_event);
if (!motion_absolute_event)
return;
*motion_absolute_event = (struct libinput_event_pointer) {
.time = time,
@ -2277,8 +2259,6 @@ pointer_notify_button(struct libinput_device *device,
return;
button_event = zalloc(sizeof *button_event);
if (!button_event)
return;
seat_button_count = update_seat_button_count(device->seat,
button,
@ -2310,8 +2290,6 @@ pointer_notify_axis(struct libinput_device *device,
return;
axis_event = zalloc(sizeof *axis_event);
if (!axis_event)
return;
*axis_event = (struct libinput_event_pointer) {
.time = time,
@ -2339,8 +2317,6 @@ touch_notify_touch_down(struct libinput_device *device,
return;
touch_event = zalloc(sizeof *touch_event);
if (!touch_event)
return;
*touch_event = (struct libinput_event_touch) {
.time = time,
@ -2367,8 +2343,6 @@ touch_notify_touch_motion(struct libinput_device *device,
return;
touch_event = zalloc(sizeof *touch_event);
if (!touch_event)
return;
*touch_event = (struct libinput_event_touch) {
.time = time,
@ -2394,8 +2368,6 @@ touch_notify_touch_up(struct libinput_device *device,
return;
touch_event = zalloc(sizeof *touch_event);
if (!touch_event)
return;
*touch_event = (struct libinput_event_touch) {
.time = time,
@ -2418,8 +2390,6 @@ touch_notify_frame(struct libinput_device *device,
return;
touch_event = zalloc(sizeof *touch_event);
if (!touch_event)
return;
*touch_event = (struct libinput_event_touch) {
.time = time,
@ -2441,8 +2411,6 @@ tablet_notify_axis(struct libinput_device *device,
struct libinput_event_tablet_tool *axis_event;
axis_event = zalloc(sizeof *axis_event);
if (!axis_event)
return;
*axis_event = (struct libinput_event_tablet_tool) {
.time = time,
@ -2473,8 +2441,6 @@ tablet_notify_proximity(struct libinput_device *device,
struct libinput_event_tablet_tool *proximity_event;
proximity_event = zalloc(sizeof *proximity_event);
if (!proximity_event)
return;
*proximity_event = (struct libinput_event_tablet_tool) {
.time = time,
@ -2504,8 +2470,6 @@ tablet_notify_tip(struct libinput_device *device,
struct libinput_event_tablet_tool *tip_event;
tip_event = zalloc(sizeof *tip_event);
if (!tip_event)
return;
*tip_event = (struct libinput_event_tablet_tool) {
.time = time,
@ -2537,8 +2501,6 @@ tablet_notify_button(struct libinput_device *device,
int32_t seat_button_count;
button_event = zalloc(sizeof *button_event);
if (!button_event)
return;
seat_button_count = update_seat_button_count(device->seat,
button,
@ -2572,8 +2534,6 @@ tablet_pad_notify_button(struct libinput_device *device,
unsigned int mode;
button_event = zalloc(sizeof *button_event);
if (!button_event)
return;
mode = libinput_tablet_pad_mode_group_get_mode(group);
@ -2603,8 +2563,6 @@ tablet_pad_notify_ring(struct libinput_device *device,
unsigned int mode;
ring_event = zalloc(sizeof *ring_event);
if (!ring_event)
return;
mode = libinput_tablet_pad_mode_group_get_mode(group);
@ -2635,8 +2593,6 @@ tablet_pad_notify_strip(struct libinput_device *device,
unsigned int mode;
strip_event = zalloc(sizeof *strip_event);
if (!strip_event)
return;
mode = libinput_tablet_pad_mode_group_get_mode(group);
@ -2672,8 +2628,6 @@ gesture_notify(struct libinput_device *device,
return;
gesture_event = zalloc(sizeof *gesture_event);
if (!gesture_event)
return;
*gesture_event = (struct libinput_event_gesture) {
.time = time,
@ -2752,8 +2706,6 @@ switch_notify_toggle(struct libinput_device *device,
return;
switch_event = zalloc(sizeof *switch_event);
if (!switch_event)
return;
*switch_event = (struct libinput_event_switch) {
.time = time,
@ -3366,9 +3318,6 @@ libinput_device_group_create(struct libinput *libinput,
struct libinput_device_group *group;
group = zalloc(sizeof *group);
if (!group)
return NULL;
group->refcount = 1;
if (identifier) {
group->identifier = strdup(identifier);

View file

@ -83,8 +83,6 @@ path_seat_create(struct path_input *input,
struct path_seat *seat;
seat = zalloc(sizeof(*seat));
if (!seat)
return NULL;
libinput_seat_init(&seat->base, &input->base, seat_name,
seat_logical_name, path_seat_destroy);
@ -226,9 +224,6 @@ path_create_device(struct libinput *libinput,
struct libinput_device *device;
dev = zalloc(sizeof *dev);
if (!dev)
return NULL;
dev->udev_device = udev_device_ref(udev_device);
list_insert(&input->path_list, &dev->link);
@ -285,8 +280,7 @@ libinput_path_create_context(const struct libinput_interface *interface,
return NULL;
input = zalloc(sizeof *input);
if (!input ||
libinput_init(&input->base, interface,
if (libinput_init(&input->base, interface,
&interface_backend, user_data) != 0) {
udev_unref(udev);
free(input);

View file

@ -296,8 +296,6 @@ udev_seat_create(struct udev_input *input,
struct udev_seat *seat;
seat = zalloc(sizeof *seat);
if (!seat)
return NULL;
libinput_seat_init(&seat->base, &input->base,
device_seat, seat_name,
@ -355,8 +353,6 @@ libinput_udev_create_context(const struct libinput_interface *interface,
return NULL;
input = zalloc(sizeof *input);
if (!input)
return NULL;
if (libinput_init(&input->base, interface,
&interface_backend, user_data) != 0) {

View file

@ -148,8 +148,9 @@ struct litest_test_device litest_atmel_hover_device = {
static void
atmel_hover_create(struct litest_device *d)
{
struct litest_semi_mt *semi_mt = zalloc(sizeof(*semi_mt));
assert(semi_mt);
struct litest_semi_mt *semi_mt;
semi_mt = zalloc(sizeof(*semi_mt));
d->private = semi_mt;

View file

@ -524,7 +524,6 @@ litest_add_tcase_for_device(struct suite *suite,
struct test *t;
t = zalloc(sizeof(*t));
assert(t != NULL);
t->name = strdup(funcname);
t->devname = strdup(dev->shortname);
t->func = func;
@ -550,7 +549,6 @@ litest_add_tcase_no_device(struct suite *suite,
return;
t = zalloc(sizeof(*t));
assert(t != NULL);
t->name = strdup(test_name);
t->devname = strdup("no device");
t->func = func;
@ -573,7 +571,6 @@ get_suite(const char *name)
}
s = zalloc(sizeof(*s));
assert(s != NULL);
s->name = strdup(name);
list_init(&s->tests);
@ -831,7 +828,6 @@ litest_init_all_device_udev_rules(struct list *created_files)
udev_file = litest_init_device_udev_rules(*dev);
if (udev_file) {
struct created_file *file = zalloc(sizeof(*file));
litest_assert(file);
file->path = udev_file;
list_insert(created_files, &file->link);
}
@ -952,7 +948,6 @@ litest_run_suite(struct list *tests, int which, int max)
t->devname);
litest_assert(sname != NULL);
n = zalloc(sizeof(*n));
litest_assert_notnull(n);
n->name = sname;
list_insert(&testnames, &n->node);
@ -962,7 +957,6 @@ litest_run_suite(struct list *tests, int which, int max)
t->devname);
litest_assert(tname != NULL);
n = zalloc(sizeof(*n));
litest_assert_notnull(n);
n->name = tname;
list_insert(&testnames, &n->node);
@ -1139,7 +1133,6 @@ litest_copy_file(const char *dest, const char *src, const char *header)
int suffixlen;
file = zalloc(sizeof(*file));
litest_assert(file);
file->path = strdup(dest);
litest_assert(file->path);
@ -1295,7 +1288,6 @@ litest_create(enum litest_device_type which,
ck_abort_msg("Invalid device type %d\n", which);
d = zalloc(sizeof(*d));
litest_assert(d != NULL);
/* device has custom create method */
if ((*dev)->create) {

View file

@ -71,8 +71,9 @@ touch_tdelta_ms(const struct touch *t)
static inline struct tap_data *
tap_data_new(void)
{
struct tap_data *tap_data = zalloc(sizeof(struct tap_data));
assert(tap_data);
struct tap_data *tap_data;
tap_data = zalloc(sizeof(struct tap_data));
return tap_data;
}
@ -122,7 +123,6 @@ tap_data_duplicate_sorted(const struct tap_data *src,
dest->toffset = src->toffset;
dest->touches_sz = dest->count;
dest->touches = zalloc(dest->count * sizeof(*dest->touches));
assert(dest->touches);
memcpy(dest->touches,
src->touches,