diff options
author | harald@redhat.com <harald@redhat.com> | 2004-10-06 00:54:08 -0700 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:37:03 -0700 |
commit | 6e3e3c3416864eca74cb885f64c453eb531eed63 (patch) | |
tree | b467f72775c46db6b8a208a61236027fce422e6a /udev_lib.c | |
parent | c8fa2d8b413f7cf1ab42d1c35865952649bfccad (diff) |
[PATCH] PATCH udev close on exec
selinux wants a clean fd set, so better close all open fds
Diffstat (limited to 'udev_lib.c')
-rw-r--r-- | udev_lib.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/udev_lib.c b/udev_lib.c index 8f6aa42377..4991ec3acb 100644 --- a/udev_lib.c +++ b/udev_lib.c @@ -255,3 +255,22 @@ int call_foreach_file(int fnct(char *f) , char *dirname, char *suffix) closedir(dir); return 0; } + +/* Set the FD_CLOEXEC flag of desc if value is nonzero, + or clear the flag if value is 0. + Return 0 on success, or -1 on error with errno set. */ + +int set_cloexec_flag (int desc, int value) +{ + int oldflags = fcntl (desc, F_GETFD, 0); + /* If reading the flags failed, return error indication now. */ + if (oldflags < 0) + return oldflags; + /* Set just the flag we want to set. */ + if (value != 0) + oldflags |= FD_CLOEXEC; + else + oldflags &= ~FD_CLOEXEC; + /* Store modified flag word in the descriptor. */ + return fcntl (desc, F_SETFD, oldflags); +} |