extattr problems?

Tim Kientzle kientzle at freebsd.org
Sun Jan 11 19:48:45 PST 2009


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:

[tim at dark /tmp]$ ./extattr_test
fd=3
extattr_set_fd() = -1
    errno = 13 (Permission denied)
[tim at 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);
}


More information about the freebsd-hackers mailing list