From 2ead6c09f1bda238b1ccd923f9983b7744581c83 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sat, 28 Nov 2009 07:33:16 +0100 Subject: [PATCH] userspec: disallow an ID that maps to (uid_t)-1 or (gid_t)-1 * lib/userspec.c (parse_with_separator): Do not accept a user ID number of MAXUID when it evaluates to (uid_t) -1. Likewise for group ID. Reported by Matt McCutchen in --- ChangeLog | 6 ++++++ lib/userspec.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e274ef72a5..0f130f5596 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-11-28 Jim Meyering + userspec: disallow an ID that maps to (uid_t)-1 or (gid_t)-1 + * lib/userspec.c (parse_with_separator): Do not accept a user ID + number of MAXUID when it evaluates to (uid_t) -1. + Likewise for group ID. Reported by Matt McCutchen in + + userspec: reformat to use spaces, not TABs * lib/userspec.c: Expand TABs to spaces. Add Emacs' "indent-tabs-mode: nil" hint. diff --git a/lib/userspec.c b/lib/userspec.c index fa2f26fa09..0388cb1d5b 100644 --- a/lib/userspec.c +++ b/lib/userspec.c @@ -169,7 +169,7 @@ parse_with_separator (char const *spec, char const *separator, { unsigned long int tmp; if (xstrtoul (u, NULL, 10, &tmp, "") == LONGINT_OK - && tmp <= MAXUID) + && tmp <= MAXUID && (uid_t) tmp != (uid_t) -1) unum = tmp; else error_msg = E_invalid_user; @@ -200,7 +200,8 @@ parse_with_separator (char const *spec, char const *separator, if (grp == NULL) { unsigned long int tmp; - if (xstrtoul (g, NULL, 10, &tmp, "") == LONGINT_OK && tmp <= MAXGID) + if (xstrtoul (g, NULL, 10, &tmp, "") == LONGINT_OK + && tmp <= MAXGID && (gid_t) tmp != (gid_t) -1) gnum = tmp; else error_msg = E_invalid_group; -- 2.30.2