summaryrefslogtreecommitdiffstats
path: root/usr.sbin/user
diff options
context:
space:
mode:
authormestre <mestre@openbsd.org>2016-11-30 22:44:19 +0000
committermestre <mestre@openbsd.org>2016-11-30 22:44:19 +0000
commit63f4fac507bbf87db9c3f7083e3c5bce5a7466bc (patch)
tree6e29aa752a61f67512edd738a30314bb1e5065ca /usr.sbin/user
parentFix typos (diff)
downloadwireguard-openbsd-63f4fac507bbf87db9c3f7083e3c5bce5a7466bc.tar.xz
wireguard-openbsd-63f4fac507bbf87db9c3f7083e3c5bce5a7466bc.zip
Mitigate some fd leaks on user(8)
OK millert@
Diffstat (limited to 'usr.sbin/user')
-rw-r--r--usr.sbin/user/user.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/usr.sbin/user/user.c b/usr.sbin/user/user.c
index 976b28f73b3..40a7fc919cb 100644
--- a/usr.sbin/user/user.c
+++ b/usr.sbin/user/user.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: user.c,v 1.116 2016/11/30 10:42:38 mestre Exp $ */
+/* $OpenBSD: user.c,v 1.117 2016/11/30 22:44:19 mestre Exp $ */
/* $NetBSD: user.c,v 1.69 2003/04/14 17:40:07 agc Exp $ */
/*
@@ -436,6 +436,9 @@ modify_gid(char *group, char *newent)
if (cc >= sizeof(buf)) {
warnx("group `%s' entry too long",
newent);
+ fclose(from);
+ fclose(to);
+ unlink(f);
return (0);
}
}
@@ -1173,6 +1176,7 @@ adduser(char *login_name, user_t *up)
pw_abort();
errx(EXIT_FAILURE, "can't append `%s' to new groups", login_name);
}
+ fclose(fp);
close(ptmpfd);
if (pw_mkdb(yp ? NULL : login_name, 0) < 0) {
pw_abort();
@@ -1634,6 +1638,7 @@ moduser(char *login_name, char *newlogin, user_t *up)
}
}
}
+ fclose(master);
close(ptmpfd);
free(pw_tmp);
free(shell_tmp);