Skip to content

Commit

Permalink
Merge pull request #266 from bbonev/std-fds
Browse files Browse the repository at this point in the history
Ensure that standard file descriptors are open
  • Loading branch information
bbonev authored Oct 5, 2023
2 parents c5bae0b + 5262448 commit 901dc17
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions src/udev/udevd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1135,6 +1135,22 @@ int main(int argc, char *argv[]) {
struct epoll_event ep_worker = { .events = EPOLLIN };
int r = 0, one = 1;

/*
* Ensure no file descriptor unwillingly falls in the 0..2 range
* Warning: DO NOT OPEN FILES BEFORE THE 3 OPENS BELOW
*/
int fd_stdi = open("/dev/null", O_RDWR);
int fd_stdo = open("/dev/null", O_RDWR);
int fd_stde = open("/dev/null", O_RDWR);

/* Close only the ones that are safe to close */
if (fd_stdi > STDERR_FILENO)
close(fd_stdi);
if (fd_stdo > STDERR_FILENO)
close(fd_stdo);
if (fd_stde > STDERR_FILENO)
close(fd_stde);

udev = udev_new();
if (!udev) {
r = log_error_errno(errno, "could not allocate udev context: %m");
Expand All @@ -1153,9 +1169,9 @@ int main(int argc, char *argv[]) {
log_warning_errno(r, "failed to parse kernel command line, ignoring: %m");

if (arg_debug) {
log_set_target(LOG_TARGET_CONSOLE);
log_set_target(LOG_TARGET_CONSOLE);
log_set_max_level(LOG_DEBUG);
}
}

if (getuid() != 0) {
r = log_error_errno(EPERM, "root privileges required");
Expand Down

0 comments on commit 901dc17

Please sign in to comment.