diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c index c6b4b9d7950..1fa7218ee67 100644 --- a/src/shared/uid-range.c +++ b/src/shared/uid-range.c @@ -69,6 +69,9 @@ int uid_range_add(UidRange **p, size_t *n, uid_t start, uid_t nr) { if (nr <= 0) return 0; + if (start > UINT32_MAX - nr) /* overflow check */ + return -ERANGE; + for (size_t i = 0; i < *n; i++) { x = (*p) + i; if (uid_range_intersect(x, start, nr)) { @@ -149,6 +152,9 @@ int uid_range_next_lower(const UidRange *p, size_t n, uid_t *uid) { assert(p); assert(uid); + if (*uid == 0) + return -EBUSY; + candidate = *uid - 1; for (size_t i = 0; i < n; i++) {