aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-07-14 22:51:28 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-07-14 22:51:28 +0000
commit39125bec38ac3a13ae550ee7ba3e924a42a73e18 (patch)
treefa3914ee20c10c198c771ed5e7081cc0e25f8cff
parent59a1f3045073c92c661035f87bdf7e28099358eb (diff)
downloadbusybox-w32-39125bec38ac3a13ae550ee7ba3e924a42a73e18.tar.gz
busybox-w32-39125bec38ac3a13ae550ee7ba3e924a42a73e18.tar.bz2
busybox-w32-39125bec38ac3a13ae550ee7ba3e924a42a73e18.zip
adduser: close /etc/{passwd,shadow} before calling passwd etc.
Spotted by Natanael Copa <natanael.copa@gmail.com>
-rw-r--r--loginutils/adduser.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/loginutils/adduser.c b/loginutils/adduser.c
index 916a25b89..229bd679d 100644
--- a/loginutils/adduser.c
+++ b/loginutils/adduser.c
@@ -109,8 +109,9 @@ static int adduser(struct passwd *p)
109 if (putpwent(p, file) == -1) { 109 if (putpwent(p, file) == -1) {
110 bb_perror_nomsg_and_die(); 110 bb_perror_nomsg_and_die();
111 } 111 }
112 if (ENABLE_FEATURE_CLEAN_UP) 112 /* Do fclose even if !ENABLE_FEATURE_CLEAN_UP.
113 fclose(file); 113 * We will exec passwd, files must be flushed & closed before that! */
114 fclose(file);
114 115
115#if ENABLE_FEATURE_SHADOWPASSWDS 116#if ENABLE_FEATURE_SHADOWPASSWDS
116 /* add to shadow if necessary */ 117 /* add to shadow if necessary */
@@ -123,8 +124,7 @@ static int adduser(struct passwd *p)
123 0, /* sp->sp_min */ 124 0, /* sp->sp_min */
124 99999, /* sp->sp_max */ 125 99999, /* sp->sp_max */
125 7); /* sp->sp_warn */ 126 7); /* sp->sp_warn */
126 if (ENABLE_FEATURE_CLEAN_UP) 127 fclose(file);
127 fclose(file);
128 } 128 }
129#endif 129#endif
130 130
@@ -134,7 +134,7 @@ static int adduser(struct passwd *p)
134 if (addgroup) addgroup_wrapper(p); 134 if (addgroup) addgroup_wrapper(p);
135 135
136 /* Clear the umask for this process so it doesn't 136 /* Clear the umask for this process so it doesn't
137 * * screw up the permissions on the mkdir and chown. */ 137 * screw up the permissions on the mkdir and chown. */
138 umask(0); 138 umask(0);
139 if (!(option_mask32 & OPT_DONT_MAKE_HOME)) { 139 if (!(option_mask32 & OPT_DONT_MAKE_HOME)) {
140 /* Set the owner and group so it is owned by the new user, 140 /* Set the owner and group so it is owned by the new user,