aboutsummaryrefslogtreecommitdiff
path: root/loginutils/adduser.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-09-16 06:22:25 +0000
committerEric Andersen <andersen@codepoet.org>2002-09-16 06:22:25 +0000
commitc38678d14b87f8e2d4f0d610d0aa61c656f17539 (patch)
tree8a08f41faae7672a634f32234dee4b5308cda39c /loginutils/adduser.c
parent166fa4684f33579277f34d887537c2abefc9deb0 (diff)
downloadbusybox-w32-c38678d14b87f8e2d4f0d610d0aa61c656f17539.tar.gz
busybox-w32-c38678d14b87f8e2d4f0d610d0aa61c656f17539.tar.bz2
busybox-w32-c38678d14b87f8e2d4f0d610d0aa61c656f17539.zip
Apply vodz' last_patch52
Diffstat (limited to 'loginutils/adduser.c')
-rw-r--r--loginutils/adduser.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/loginutils/adduser.c b/loginutils/adduser.c
index 7455f23a6..3485611cc 100644
--- a/loginutils/adduser.c
+++ b/loginutils/adduser.c
@@ -110,18 +110,20 @@ static int passwd_study(const char *filename, struct passwd *p)
110 110
111static void addgroup_wrapper(const char *login, gid_t gid) 111static void addgroup_wrapper(const char *login, gid_t gid)
112{ 112{
113 char *cmd = xmalloc(strlen(login)+32); 113 char *cmd;
114 114
115 sprintf(cmd, "addgroup -g %d %s", gid, login); 115 bb_asprintf(&cmd, "addgroup -g %d %s", gid, login);
116 system(cmd); 116 system(cmd);
117 free(cmd); 117 free(cmd);
118} 118}
119 119
120static void passwd_wrapper(const char *login) __attribute__ ((noreturn));
121
120static void passwd_wrapper(const char *login) 122static void passwd_wrapper(const char *login)
121{ 123{
122 static const char prog[] = "passwd"; 124 static const char prog[] = "passwd";
123 execlp(prog, prog, login, NULL); 125 execlp(prog, prog, login, NULL);
124 error_msg_and_die("Failed to execute 'passwd', you must set the password for '%s' manually", login); 126 error_msg_and_die("Failed to execute '%s', you must set the password for '%s' manually", prog, login);
125} 127}
126 128
127/* putpwent(3) remix */ 129/* putpwent(3) remix */
@@ -137,7 +139,6 @@ static int adduser(const char *filename, struct passwd *p)
137 /* make sure everything is kosher and setup uid && gid */ 139 /* make sure everything is kosher and setup uid && gid */
138 passwd = wfopen(filename, "a"); 140 passwd = wfopen(filename, "a");
139 if (passwd == NULL) { 141 if (passwd == NULL) {
140 /* return -1; */
141 return 1; 142 return 1;
142 } 143 }
143 fseek(passwd, 0, SEEK_END); 144 fseek(passwd, 0, SEEK_END);
@@ -153,13 +154,11 @@ static int adduser(const char *filename, struct passwd *p)
153 error_msg("group name %s already in use", p->pw_name); 154 error_msg("group name %s already in use", p->pw_name);
154 else 155 else
155 error_msg("generic error."); 156 error_msg("generic error.");
156 /* return -1; */
157 return 1; 157 return 1;
158 } 158 }
159 159
160 /* add to passwd */ 160 /* add to passwd */
161 if (putpwent(p, passwd) == -1) { 161 if (putpwent(p, passwd) == -1) {
162 /* return -1; */
163 return 1; 162 return 1;
164 } 163 }
165 fclose(passwd); 164 fclose(passwd);
@@ -169,7 +168,6 @@ static int adduser(const char *filename, struct passwd *p)
169 if (shadow_enabled) { 168 if (shadow_enabled) {
170 shadow = wfopen(shadow_file, "a"); 169 shadow = wfopen(shadow_file, "a");
171 if (shadow == NULL) { 170 if (shadow == NULL) {
172 /* return -1; */
173 return 1; 171 return 1;
174 } 172 }
175 fseek(shadow, 0, SEEK_END); 173 fseek(shadow, 0, SEEK_END);
@@ -206,8 +204,6 @@ static int adduser(const char *filename, struct passwd *p)
206 } 204 }
207 /* interactively set passwd */ 205 /* interactively set passwd */
208 passwd_wrapper(p->pw_name); 206 passwd_wrapper(p->pw_name);
209
210 return 0;
211} 207}
212 208
213 209
@@ -293,4 +289,4 @@ int adduser_main(int argc, char **argv)
293 return adduser(passwd_file, &pw); 289 return adduser(passwd_file, &pw);
294} 290}
295 291
296/* $Id: adduser.c,v 1.3 2002/07/16 23:50:05 sandman Exp $ */ 292/* $Id: adduser.c,v 1.4 2002/09/16 06:22:24 andersen Exp $ */