static struct gpfs_acl *gpfs_getacl_alloc(const char *fname, gpfs_aclType_t type)
{
struct gpfs_acl *acl;
+ struct gpfs_ace_v4 *ace;
size_t len = 200;
int ret;
TALLOC_CTX *mem_ctx = talloc_tos();
ret = smbd_gpfs_getacl((char *)fname, GPFS_GETACL_STRUCT | GPFS_ACL_SAMBA, acl);
}
- if (ret != 0)
- {
+ if (ret == 0) {
+ return acl;
+ }
+ if (errno != ENODATA) {
DEBUG(8, ("smbd_gpfs_getacl failed with %s\n",strerror(errno)));
return NULL;
}
+ DEBUG(10, ("gpfs_getacl returned ENODATA, returning bogus ACL\n"));
+
+ acl->acl_nace = 1;
+ acl->acl_type = GPFS_ACL_TYPE_NFS4;
+
+ ace = &acl->ace_v4[0];
+ ace->aceWho = ACE4_SPECIAL_EVERYONE;
+ ace->aceType = ACE4_TYPE_ALLOW;
+ ace->aceMask = ACE4_MASK_ALL;
+ ace->aceIFlags = ACE4_IFLAG_SPECIAL_ID;
+ ace->aceFlags = 0;
+
return acl;
}