mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
util: set errno when hitting WL_MAP_MAX_OBJECTS
Callers may check errno when wl_map_insert_* functions return an
error (since [1]). Make sure it's always set to a meaningful value
when returning an error, otherwise callers might end up checking an
errno coming from a completely different function.
[1]: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/205
Signed-off-by: Simon Ser <contact@emersion.fr>
Fixes: b19488c715 ("util: Limit size of wl_map")
This commit is contained in:
parent
8e322a5a99
commit
c7fc1e79ca
1 changed files with 7 additions and 2 deletions
|
|
@ -232,6 +232,7 @@ wl_map_insert_new(struct wl_map *map, uint32_t flags, void *data)
|
|||
* better make it a NULL so wl_map_for_each doesn't
|
||||
* dereference it later. */
|
||||
entry->data = NULL;
|
||||
errno = ENOSPC;
|
||||
return 0;
|
||||
}
|
||||
entry->data = data;
|
||||
|
|
@ -254,8 +255,10 @@ wl_map_insert_at(struct wl_map *map, uint32_t flags, uint32_t i, void *data)
|
|||
i -= WL_SERVER_ID_START;
|
||||
}
|
||||
|
||||
if (i > WL_MAP_MAX_OBJECTS)
|
||||
if (i > WL_MAP_MAX_OBJECTS) {
|
||||
errno = ENOSPC;
|
||||
return -1;
|
||||
}
|
||||
|
||||
count = entries->size / sizeof *start;
|
||||
if (count < i) {
|
||||
|
|
@ -299,8 +302,10 @@ wl_map_reserve_new(struct wl_map *map, uint32_t i)
|
|||
i -= WL_SERVER_ID_START;
|
||||
}
|
||||
|
||||
if (i > WL_MAP_MAX_OBJECTS)
|
||||
if (i > WL_MAP_MAX_OBJECTS) {
|
||||
errno = ENOSPC;
|
||||
return -1;
|
||||
}
|
||||
|
||||
count = entries->size / sizeof *start;
|
||||
if (count < i) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue