This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: cygwin1.dll bug in open(O_EXCL)
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 24 Aug 2007 16:56:30 +0200
- Subject: Re: cygwin1.dll bug in open(O_EXCL)
- References: <46CEDC45.7070704@byu.net>
- Reply-to: cygwin at cygwin dot com
On Aug 24 07:25, Eric Blake wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> I finally found root cause for the tar issue reported here:
> http://cygwin.com/ml/cygwin/2007-08/msg00553.html
>
> $ cat foo.c
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <errno.h>
> #include <string.h>
> #include <fcntl.h>
>
> int main(int argc, char**argv)
> {
> int fd;
> symlink ("oops", "broken");
> fd = open ("broken", O_WRONLY|O_CREAT|O_EXCL, 0600);
> printf ("fd=%d, errno=%d: %s\n", fd, errno, strerror (errno));
> return 0;
> }
> $ ./foo
> fd=3, errno=0: No error
> $ ls -F oops broken
> broken@ oops
>
> According to POSIX, this should have failed with EEXIST, and oops should
> not have been created.
If I understand this right, it means that O_EXCL implies not following
symlinks. I've applied a matching patch to CVS. Please give it a try.
Thanks,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/