← Commit list

39125bec3

Denis Vlasenko
Denis Vlasenko
2007-07-14
FAILED Duration: 20s

Subject

adduser: close /etc/{passwd,shadow} before calling passwd etc. Spotted by Natanael Copa

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

loginutils/adduser.c+5 -5
@@ -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,