From: Lennart Poettering Date: Thu, 31 Mar 2022 12:28:00 +0000 (+0200) Subject: uid-range: add some overflow checks X-Git-Tag: v251-rc2~226^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0a5c6a57c64345beb96171a5a1b824b9a185652f;p=thirdparty%2Fsystemd.git uid-range: add some overflow checks --- 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++) {