diff options
author | Denis Vlasenko | 2007-07-14 22:51:28 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-07-14 22:51:28 +0000 |
commit | 39125bec38ac3a13ae550ee7ba3e924a42a73e18 (patch) | |
tree | fa3914ee20c10c198c771ed5e7081cc0e25f8cff | |
parent | 59a1f3045073c92c661035f87bdf7e28099358eb (diff) | |
download | busybox-39125bec38ac3a13ae550ee7ba3e924a42a73e18.zip busybox-39125bec38ac3a13ae550ee7ba3e924a42a73e18.tar.gz |
adduser: close /etc/{passwd,shadow} before calling passwd etc.
Spotted by Natanael Copa <natanael.copa@gmail.com>
-rw-r--r-- | loginutils/adduser.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/loginutils/adduser.c b/loginutils/adduser.c index 916a25b..229bd67 100644 --- a/loginutils/adduser.c +++ b/loginutils/adduser.c @@ -109,8 +109,9 @@ static int adduser(struct passwd *p) if (putpwent(p, file) == -1) { bb_perror_nomsg_and_die(); } - if (ENABLE_FEATURE_CLEAN_UP) - fclose(file); + /* Do fclose even if !ENABLE_FEATURE_CLEAN_UP. + * We will exec passwd, files must be flushed & closed before that! */ + fclose(file); #if ENABLE_FEATURE_SHADOWPASSWDS /* add to shadow if necessary */ @@ -123,8 +124,7 @@ static int adduser(struct passwd *p) 0, /* sp->sp_min */ 99999, /* sp->sp_max */ 7); /* sp->sp_warn */ - if (ENABLE_FEATURE_CLEAN_UP) - fclose(file); + fclose(file); } #endif @@ -134,7 +134,7 @@ static int adduser(struct passwd *p) if (addgroup) addgroup_wrapper(p); /* Clear the umask for this process so it doesn't - * * screw up the permissions on the mkdir and chown. */ + * screw up the permissions on the mkdir and chown. */ umask(0); if (!(option_mask32 & OPT_DONT_MAKE_HOME)) { /* Set the owner and group so it is owned by the new user, |