svn commit: r229966 - head/lib/libutil
Pawel Jakub Dawidek
pjd at FreeBSD.org
Wed Jan 11 23:52:16 UTC 2012
On Wed, Jan 11, 2012 at 04:35:26PM +0000, Guy Helmer wrote:
> Author: ghelmer
> Date: Wed Jan 11 16:35:26 2012
> New Revision: 229966
> URL: http://svn.freebsd.org/changeset/base/229966
>
> Log:
> jilles pointed out that O_CLOEXEC could be used in the open(2) flags
> rather than using fcntl(2) later, and in addition to saving a system
> call, removes a possible race with fork/exec from threads or signal
> handlers.
So now we can remove fcntl() as the source of possible pidfile_open()
errnos from the manual page.:)
> Modified:
> head/lib/libutil/pidfile.c
>
> Modified: head/lib/libutil/pidfile.c
> ==============================================================================
> --- head/lib/libutil/pidfile.c Wed Jan 11 15:00:16 2012 (r229965)
> +++ head/lib/libutil/pidfile.c Wed Jan 11 16:35:26 2012 (r229966)
> @@ -117,7 +117,7 @@ pidfile_open(const char *path, mode_t mo
> * pidfile_write() can be called multiple times.
> */
> fd = flopen(pfh->pf_path,
> - O_WRONLY | O_CREAT | O_TRUNC | O_NONBLOCK, mode);
> + O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NONBLOCK, mode);
> if (fd == -1) {
> if (errno == EWOULDBLOCK && pidptr != NULL) {
> count = 20;
> @@ -139,19 +139,6 @@ pidfile_open(const char *path, mode_t mo
> }
>
> /*
> - * Prevent the file descriptor from escaping to other
> - * programs via exec(3).
> - */
> - if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
> - error = errno;
> - unlink(pfh->pf_path);
> - close(fd);
> - free(pfh);
> - errno = error;
> - return (NULL);
> - }
> -
> - /*
> * Remember file information, so in pidfile_write() we are sure we write
> * to the proper descriptor.
> */
--
Pawel Jakub Dawidek http://www.wheelsystems.com
FreeBSD committer http://www.FreeBSD.org
Am I Evil? Yes, I Am! http://yomoli.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-head/attachments/20120111/dd53be60/attachment.pgp
More information about the svn-src-head
mailing list