From: Christian Weisgerber Subject: stop using unportable and error-prone [UG]ID_MAX To: gameoftrees@openbsd.org Date: Fri, 25 Sep 2026 15:16:36 +0200 UID_MAX and GID_MAX are not portable and their use is prone to errors. It looks like they will be going away from the OpenBSD headers. ok? ----------------------------------------------- commit e73fbdb3419bfd66074325ca34db7d2f06bc53be (ugid_max) from: Christian Weisgerber date: Fri Sep 25 13:03:50 2026 UTC stop using unportable and error-prone [UG]ID_MAX M gotd/auth.c | 2+ 2- M gotd/gotd.c | 2+ 2- M gotd/parse.y | 2+ 2- M gotsysd/auth.c | 2+ 2- M gotsysd/gotsysd.c | 2+ 2- M gotsysd/libexec/gotsys-groupadd/gotsys-groupadd.c | 1+ 1- M gotsysd/libexec/gotsys-useradd/gotsys-useradd.c | 2+ 2- M gotsysd/libexec/gotsys-userhome/gotsys-userhome.c | 2+ 2- M gotsysd/parse.y | 7+ 7- M gotwebd/auth.c | 4+ 4- 10 files changed, 26 insertions(+), 26 deletions(-) diff 81c98775c04265beb18bc4203bca6a627ddfcfac e73fbdb3419bfd66074325ca34db7d2f06bc53be commit - 81c98775c04265beb18bc4203bca6a627ddfcfac commit + e73fbdb3419bfd66074325ca34db7d2f06bc53be blob - 99752a0ec1d2b96960f266745aebfcc2bba9c4b2 blob + 0f3ea4056cbca19ea6d8fb13c3554007e71988ec --- gotd/auth.c +++ gotd/auth.c @@ -95,11 +95,11 @@ parsegid(const char *s, gid_t *gid) if ((gr = getgrnam(s)) != NULL) { *gid = gr->gr_gid; - if (*gid == GID_MAX) + if (*gid == -1) return -1; return 0; } - *gid = strtonum(s, 0, GID_MAX - 1, &errstr); + *gid = strtonum(s, 0, UINT_MAX - 1, &errstr); if (errstr) return -1; return 0; blob - b21b50e035dd880e6917228f8046f3b2a3e642ce blob + 83907bca5a321b20da0b228f0bb2bde1323d7c01 --- gotd/gotd.c +++ gotd/gotd.c @@ -3539,7 +3539,7 @@ main(int argc, char **argv) pw = getpwnam(gotd.user_name); if (pw == NULL) { - uid = strtonum(gotd.user_name, 0, UID_MAX - 1, &errstr); + uid = strtonum(gotd.user_name, 0, UINT_MAX - 1, &errstr); if (errstr == NULL) pw = getpwuid(uid); } @@ -3690,7 +3690,7 @@ main(int argc, char **argv) pw = getpwnam(gotd.user_name); if (pw == NULL) { - uid = strtonum(gotd.user_name, 0, UID_MAX - 1, &errstr); + uid = strtonum(gotd.user_name, 0, UINT_MAX - 1, &errstr); if (errstr == NULL) pw = getpwuid(uid); } blob - f367e5a43d5c219b2524ae00cf0508b70c89693a blob + 44d3566166c62cfe42884a1c13490e84ff78e37d --- gotd/parse.y +++ gotd/parse.y @@ -1825,11 +1825,11 @@ gotd_parseuid(const char *s, uid_t *uid) if ((pw = getpwnam(s)) != NULL) { *uid = pw->pw_uid; - if (*uid == UID_MAX) + if (*uid == -1) return -1; return 0; } - *uid = strtonum(s, 0, UID_MAX - 1, &errstr); + *uid = strtonum(s, 0, UINT_MAX - 1, &errstr); if (errstr) return -1; return 0; blob - 18680c12bbd96af1da39d565a8a690cef9135260 blob + 6936977f0885dc76b89342659cbbb7951949e217 --- gotsysd/auth.c +++ gotsysd/auth.c @@ -95,11 +95,11 @@ parsegid(const char *s, gid_t *gid) if ((gr = getgrnam(s)) != NULL) { *gid = gr->gr_gid; - if (*gid == GID_MAX) + if (*gid == -1) return -1; return 0; } - *gid = strtonum(s, 0, GID_MAX - 1, &errstr); + *gid = strtonum(s, 0, UINT_MAX - 1, &errstr); if (errstr) return -1; return 0; blob - 9214b41729917bc9ae595e6506c321bfc3515a3c blob + 1016d32948f10a59b4cd7759b88afc32f0f6a03a --- gotsysd/gotsysd.c +++ gotsysd/gotsysd.c @@ -1778,7 +1778,7 @@ main(int argc, char **argv) pw = getpwnam(gotsysd.gotd_username); if (pw == NULL) { - uid = strtonum(gotsysd.gotd_username, 0, UID_MAX - 1, &errstr); + uid = strtonum(gotsysd.gotd_username, 0, UINT_MAX - 1, &errstr); if (errstr == NULL) { pw = getpwuid(uid); if (pw && strlcpy(gotsysd.gotd_username, pw->pw_name, @@ -1797,7 +1797,7 @@ main(int argc, char **argv) pw = getpwnam(gotsysd.user_name); if (pw == NULL) { - uid = strtonum(gotsysd.user_name, 0, UID_MAX - 1, &errstr); + uid = strtonum(gotsysd.user_name, 0, UINT_MAX - 1, &errstr); if (errstr == NULL) { pw = getpwuid(uid); if (pw && strlcpy(gotsysd.user_name, pw->pw_name, blob - f6608f3c02ba8f78199a40ce2e14da751e58118b blob + 65b89a08547ee07c86987cff1b994b3e7e0ea1d5 --- gotsysd/libexec/gotsys-groupadd/gotsys-groupadd.c +++ gotsysd/libexec/gotsys-groupadd/gotsys-groupadd.c @@ -126,7 +126,7 @@ assign_gid(gid_t *gid, struct gotsys_uidset *gids) /* sanity checks -- should not happen */ if (groupadd_gid_start == 0 || groupadd_gid_start >= groupadd_gid_end || - g < GOTSYSD_UID_MIN || g < groupadd_gid_start || g == GID_MAX) + g < GOTSYSD_UID_MIN || g < groupadd_gid_start || g == -1) abort(); if (g > groupadd_gid_end) { blob - 4e7d81474b0a1a4feffdb9cbe0c8f8ee26e840e6 blob + b057df8abd2756d0e491d4a746945a917b55ce82 --- gotsysd/libexec/gotsys-useradd/gotsys-useradd.c +++ gotsysd/libexec/gotsys-useradd/gotsys-useradd.c @@ -149,7 +149,7 @@ assign_uid(uid_t *uid, struct gotsys_uidset *uids) /* sanity checks -- should not happen */ if (useradd_uid_start == 0 || useradd_uid_start >= useradd_uid_end || - u < GOTSYSD_UID_MIN || u < useradd_uid_start || u == UID_MAX) { + u < GOTSYSD_UID_MIN || u < useradd_uid_start || u == -1) { pw_abort(); abort(); } @@ -181,7 +181,7 @@ write_user_entry(struct gotsys_user *user, uid_t uid) ssize_t w; /* sanity */ - if (uid == 0 || uid == UID_MAX) { + if (uid == 0 || uid == -1) { pw_abort(); abort(); } blob - 59b82d58a47c23b5a8cd1dc78923f2631faf617e blob + a9101d9667b437bb38876e51a1d2527010e7bb12 --- gotsysd/libexec/gotsys-userhome/gotsys-userhome.c +++ gotsysd/libexec/gotsys-userhome/gotsys-userhome.c @@ -141,8 +141,8 @@ create_homedirs(void) #if GOTSYSD_UID_MIN == 0 #error "UID 0 must not be used as GOTSYSD_UID_MIN" #endif -#if GOTSYSD_UID_MIN == UID_MAX -#error "UID UID_MAX must not be used as GOTSYSD_UID_MIN" +#if GOTSYSD_UID_MIN == UINT_MAX +#error "UID UINT_MAX must not be used as GOTSYSD_UID_MIN" #endif if (userhome_uid_start == 0 || userhome_uid_start >= userhome_uid_end) abort(); blob - 6af13da98b7fd6f22af8d422cdd31059cd2a6956 blob + 7b32606e939f3b783aa31c929c68ff3cfc2e0bef --- gotsysd/parse.y +++ gotsysd/parse.y @@ -255,8 +255,8 @@ main : LISTEN ON STRING { #if GOTSYSD_UID_MIN == 0 #error "UID 0 must not be used as GOTSYSD_UID_MIN" #endif -#if GOTSYSD_UID_MIN == UID_MAX -#error "UID UID_MAX must not be used as GOTSYSD_UID_MIN" +#if GOTSYSD_UID_MIN == UINT_MAX +#error "UID UINT_MAX must not be used as GOTSYSD_UID_MIN" #endif if (gotsysd->uid_start < GOTSYSD_UID_MIN || gotsysd->uid_end < GOTSYSD_UID_MIN) { @@ -266,10 +266,10 @@ main : LISTEN ON STRING { YYERROR; } - if (gotsysd->uid_start == UID_MAX || - gotsysd->uid_end == UID_MAX) { + if (gotsysd->uid_start == UINT_MAX || + gotsysd->uid_end == UINT_MAX) { yyerror("%s: UID %u is not allowed in " - "uid range", __func__, UID_MAX); + "uid range", __func__, UINT_MAX); YYERROR; } @@ -1269,11 +1269,11 @@ gotsysd_parseuid(const char *s, uid_t *uid) if ((pw = getpwnam(s)) != NULL) { *uid = pw->pw_uid; - if (*uid == UID_MAX) + if (*uid == -1) return -1; return 0; } - *uid = strtonum(s, 0, UID_MAX - 1, &errstr); + *uid = strtonum(s, 0, UINT_MAX - 1, &errstr); if (errstr) return -1; return 0; blob - 3e946d41674c1d5ec5eaeb036f67ee73db96a809 blob + f5f2ce6914bf1f0dca27d9a952dc351e3eaf68f2 --- gotwebd/auth.c +++ gotwebd/auth.c @@ -120,11 +120,11 @@ parseuid(const char *s, uid_t *uid) if ((pw = getpwnam(s)) != NULL) { *uid = pw->pw_uid; - if (*uid == UID_MAX) + if (*uid == -1) return -1; return 0; } - *uid = strtonum(s, 0, UID_MAX - 1, &errstr); + *uid = strtonum(s, 0, UINT_MAX - 1, &errstr); if (errstr) return -1; return 0; @@ -150,11 +150,11 @@ parsegid(const char *s, gid_t *gid) if ((gr = getgrnam(s)) != NULL) { *gid = gr->gr_gid; - if (*gid == GID_MAX) + if (*gid == -1) return -1; return 0; } - *gid = strtonum(s, 0, GID_MAX - 1, &errstr); + *gid = strtonum(s, 0, UINT_MAX - 1, &errstr); if (errstr) return -1; return 0; -- Christian "naddy" Weisgerber naddy@mips.inka.de