Suggested-by: Jann Horn <jann@thejh.net>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
return openat(dir_fd, path, O_NOFOLLOW | flags);
}
+
+int fd_make_nonblocking(int fd)
+{
+ int flags;
+
+ flags = fcntl(fd, F_GETFL);
+ if (flags < 0)
+ return -1;
+
+ flags &= ~O_NONBLOCK;
+ return fcntl(fd, F_SETFL, flags);
+}
__hidden extern bool exists_dir_at(int dir_fd, const char *path);
__hidden extern bool exists_file_at(int dir_fd, const char *path);
__hidden extern int open_beneath(int dir_fd, const char *path, unsigned int flags);
+__hidden int fd_make_nonblocking(int fd);
#endif /* __LXC_FILE_UTILS_H */
return -1;
}
+ if (fd_make_nonblocking(ret))
+ return log_error_errno(-1, errno, "Failed to make seccomp listener fd non-blocking");;
+
conf->seccomp.notifier.notify_fd = ret;
TRACE("Retrieved new seccomp listener fd %d", ret);
}