aboutsummaryrefslogtreecommitdiff
path: root/loginutils/addgroup.c
diff options
context:
space:
mode:
authorTito Ragusa <farmatito@tiscali.it>2014-01-17 09:17:55 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-01-17 09:17:55 +0100
commit891b98c9bcb0872465c1f9192b8cbc9779b8d164 (patch)
tree859511fb76a5c50793a2833697cf4b232865e283 /loginutils/addgroup.c
parent2e66daca654d130b820a4f0498de7f0ec355039a (diff)
downloadbusybox-w32-891b98c9bcb0872465c1f9192b8cbc9779b8d164.tar.gz
busybox-w32-891b98c9bcb0872465c1f9192b8cbc9779b8d164.tar.bz2
busybox-w32-891b98c9bcb0872465c1f9192b8cbc9779b8d164.zip
adduser,addgroup: introduce and use CONFIG_LAST_ID
Changes adduser.c, addgroup.c and Config.src to set and use CONFIG_LAST_ID. function old new delta adduser_main 841 865 +24 addgroup_main 407 425 +18 Signed-off-by: Tito Ragusa <farmatito@tiscali.it> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'loginutils/addgroup.c')
-rw-r--r--loginutils/addgroup.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/loginutils/addgroup.c b/loginutils/addgroup.c
index b37270ff0..22cd0e661 100644
--- a/loginutils/addgroup.c
+++ b/loginutils/addgroup.c
@@ -22,14 +22,16 @@
22#if CONFIG_LAST_SYSTEM_ID < CONFIG_FIRST_SYSTEM_ID 22#if CONFIG_LAST_SYSTEM_ID < CONFIG_FIRST_SYSTEM_ID
23#error Bad LAST_SYSTEM_ID or FIRST_SYSTEM_ID in .config 23#error Bad LAST_SYSTEM_ID or FIRST_SYSTEM_ID in .config
24#endif 24#endif
25#if CONFIG_LAST_ID < CONFIG_LAST_SYSTEM_ID
26#error Bad LAST_ID or LAST_SYSTEM_ID in .config
27#endif
25 28
26#define OPT_GID (1 << 0) 29#define OPT_GID (1 << 0)
27#define OPT_SYSTEM_ACCOUNT (1 << 1) 30#define OPT_SYSTEM_ACCOUNT (1 << 1)
28 31
29/* We assume GID_T_MAX == INT_MAX */
30static void xgroup_study(struct group *g) 32static void xgroup_study(struct group *g)
31{ 33{
32 unsigned max = INT_MAX; 34 unsigned max = CONFIG_LAST_ID;
33 35
34 /* Make sure gr_name is unused */ 36 /* Make sure gr_name is unused */
35 if (getgrnam(g->gr_name)) { 37 if (getgrnam(g->gr_name)) {
@@ -46,7 +48,6 @@ static void xgroup_study(struct group *g)
46 max = CONFIG_LAST_SYSTEM_ID; 48 max = CONFIG_LAST_SYSTEM_ID;
47 } else { 49 } else {
48 g->gr_gid = CONFIG_LAST_SYSTEM_ID + 1; 50 g->gr_gid = CONFIG_LAST_SYSTEM_ID + 1;
49 max = 64999;
50 } 51 }
51 } 52 }
52 /* Check if the desired gid is free 53 /* Check if the desired gid is free
@@ -125,7 +126,7 @@ int addgroup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
125int addgroup_main(int argc UNUSED_PARAM, char **argv) 126int addgroup_main(int argc UNUSED_PARAM, char **argv)
126{ 127{
127 unsigned opts; 128 unsigned opts;
128 unsigned gid = 0; 129 const char *gid = "0";
129 130
130 /* need to be root */ 131 /* need to be root */
131 if (geteuid()) { 132 if (geteuid()) {
@@ -139,7 +140,7 @@ int addgroup_main(int argc UNUSED_PARAM, char **argv)
139 * addgroup -g num group 140 * addgroup -g num group
140 * addgroup user group 141 * addgroup user group
141 * Check for min, max and missing args */ 142 * Check for min, max and missing args */
142 opt_complementary = "-1:?2:g+"; 143 opt_complementary = "-1:?2";
143 opts = getopt32(argv, "g:S", &gid); 144 opts = getopt32(argv, "g:S", &gid);
144 /* move past the commandline options */ 145 /* move past the commandline options */
145 argv += optind; 146 argv += optind;
@@ -175,7 +176,7 @@ int addgroup_main(int argc UNUSED_PARAM, char **argv)
175#endif /* ENABLE_FEATURE_ADDUSER_TO_GROUP */ 176#endif /* ENABLE_FEATURE_ADDUSER_TO_GROUP */
176 { 177 {
177 die_if_bad_username(argv[0]); 178 die_if_bad_username(argv[0]);
178 new_group(argv[0], gid); 179 new_group(argv[0], xatou_range(gid, 0, CONFIG_LAST_ID));
179 } 180 }
180 /* Reached only on success */ 181 /* Reached only on success */
181 return EXIT_SUCCESS; 182 return EXIT_SUCCESS;