1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-17 15:27:36 +00:00

Make sure that fstab fd is not leaked on exec.

PR:  kern/169023
Submitted by:	Jukka Ukkonen <jau iki fi>
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2012-06-14 12:28:43 +00:00
parent e474e51e07
commit 61235d9e01
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=237061

View File

@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <fstab.h>
#include <paths.h>
#include <stdio.h>
@ -246,6 +247,8 @@ getfsfile(name)
int
setfsent()
{
int fd;
if (_fs_fp) {
rewind(_fs_fp);
LineNo = 0;
@ -257,11 +260,18 @@ setfsent()
else
setfstab(getenv("PATH_FSTAB"));
}
if ((_fs_fp = fopen(path_fstab, "r")) != NULL) {
fd = _open(path_fstab, O_RDONLY | O_CLOEXEC);
if (fd == -1) {
error(errno);
return (0);
}
_fs_fp = fdopen(fd, "r");
if (_fs_fp != NULL) {
LineNo = 0;
return(1);
}
error(errno);
_close(fd);
return(0);
}