X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libatalk%2Facl%2Funix.c;h=9b22511e2f5325f1116d2de8d590848add4daaca;hb=refs%2Fheads%2Fv3.1.6-alex;hp=6284935173d87c7cced42ce80419977cc1df40f8;hpb=cf3e505e21e9c7ffba3a048ced9b772be8301e98;p=netatalk.git diff --git a/libatalk/acl/unix.c b/libatalk/acl/unix.c index 62849351..9b22511e 100644 --- a/libatalk/acl/unix.c +++ b/libatalk/acl/unix.c @@ -35,7 +35,7 @@ #include #include -#ifdef HAVE_SOLARIS_ACLS +#ifdef HAVE_NFSV4_ACLS /* Get ACL. Allocates storage as needed. Caller must free. * Returns no of ACEs or -1 on error. */ @@ -276,7 +276,7 @@ exit: return ret; } -#endif /* HAVE_SOLARIS_ACLS */ +#endif /* HAVE_NFSV4_ACLS */ #ifdef HAVE_POSIX_ACLS @@ -308,6 +308,14 @@ int posix_chmod(const char *name, mode_t mode) { /* Call chmod() first because there might be some special bits to be set which * aren't related to access control. */ +#ifdef BSD4_4 + /* + * On FreeBSD chmod_acl() ends up in here too, but on + * FreeBSD sine ~9.1 with ZFS doesn't allow setting the g+s bit. + * Fixes PR #491. + */ + mode &= 0777; +#endif ret = chmod(name, mode); if (ret)