util: always check result of wl_array_add()

Not checking the result of wl_array_add() can cause writes past the end of the
allocated buffer if realloc fails.

Signed-off-by: Aleksandr Mezin <mezin.alexander@gmail.com>
This commit is contained in:
Aleksandr Mezin 2022-01-26 19:16:55 +06:00 committed by Simon Ser
parent b6bbc0c44d
commit ae263cca3e

View file

@ -241,8 +241,10 @@ wl_map_insert_at(struct wl_map *map, uint32_t flags, uint32_t i, void *data)
if (count < i)
return -1;
if (count == i)
wl_array_add(entries, sizeof *start);
if (count == i) {
if (!wl_array_add(entries, sizeof *start))
return -1;
}
start = entries->data;
start[i].data = data;
@ -277,7 +279,9 @@ wl_map_reserve_new(struct wl_map *map, uint32_t i)
return -1;
if (count == i) {
wl_array_add(entries, sizeof *start);
if (!wl_array_add(entries, sizeof *start))
return -1;
start = entries->data;
start[i].data = NULL;
} else {