I think this one is a bug.  It appears that extattr_set_fd()
obeys the permissions on the file, not the permissions
of the descriptor.  In particular, I see this on
FreeBSD 6.3:

[...@dark /tmp]$ ./extattr_test
fd=3
extattr_set_fd() = -1
   errno = 13 (Permission denied)
[...@dark /tmp]$ cat extattr_test.c
#include <sys/types.h>
#include <sys/extattr.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>

int
main(int argc, char **argv)
{
        int n, fd;

        fd = open("/tmp/test12345", O_RDWR | O_CREAT | O_EXCL, 0000);
        printf("fd=%d\n", fd);
        n = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER,
                "testattr", "1234", 4);
        printf("extattr_set_fd() = %d\n", n);
        if (n != 0)
                printf("errno = %d (%s)\n",
                        errno, strerror(errno));
        exit(0);
}
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to