* fhandler_disk_file.cc (fhandler_disk_file::facl): If file can't be
opened for reading the ACLs, fall back to faking them. * sec_acl.cc (acl_worker): Handle non-existing files. * security.cc (get_file_attribute): Return ILLEGAL_UID/ILLEGAL_GID as owner/group for non-readable ACLs on file systems supporting them.
This commit is contained in:
parent
73151c54d5
commit
378692ee42
@ -1,3 +1,11 @@
|
||||
2007-07-30 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* fhandler_disk_file.cc (fhandler_disk_file::facl): If file can't be
|
||||
opened for reading the ACLs, fall back to faking them.
|
||||
* sec_acl.cc (acl_worker): Handle non-existing files.
|
||||
* security.cc (get_file_attribute): Return ILLEGAL_UID/ILLEGAL_GID
|
||||
as owner/group for non-readable ACLs on file systems supporting them.
|
||||
|
||||
2007-07-30 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* syscalls.cc (stat_worker): Don't call build_fh_pc with invalid pc.
|
||||
|
@ -841,6 +841,7 @@ fhandler_disk_file::facl (int cmd, int nentries, __aclent32_t *aclbufp)
|
||||
|
||||
if (!pc.has_acls () || !allow_ntsec)
|
||||
{
|
||||
cant_access_acl:
|
||||
switch (cmd)
|
||||
{
|
||||
struct __stat64 st;
|
||||
@ -895,9 +896,13 @@ fhandler_disk_file::facl (int cmd, int nentries, __aclent32_t *aclbufp)
|
||||
{
|
||||
if (!get_handle ())
|
||||
{
|
||||
query_open (cmd == SETACL ? query_write_control : query_read_attributes);
|
||||
query_open (cmd == SETACL ? query_write_control : query_read_control);
|
||||
if (!(oret = open (O_BINARY, 0)))
|
||||
return -1;
|
||||
{
|
||||
if (cmd == GETACL || cmd == GETACLCNT)
|
||||
goto cant_access_acl;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
switch (cmd)
|
||||
{
|
||||
|
@ -407,6 +407,8 @@ acl_worker (const char *path, int cmd, int nentries, __aclent32_t *aclbufp,
|
||||
debug_printf ("got %d error from build_fh_name", fh->error ());
|
||||
set_errno (fh->error ());
|
||||
}
|
||||
else if (!fh->exists ())
|
||||
set_errno (ENOENT);
|
||||
else
|
||||
res = fh->facl (cmd, nentries, aclbufp);
|
||||
|
||||
|
@ -336,6 +336,15 @@ get_file_attribute (HANDLE handle, path_conv &pc,
|
||||
get_info_from_sd (sd, attribute, uidret, gidret);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (uidret)
|
||||
*uidret = ILLEGAL_UID;
|
||||
if (gidret)
|
||||
*gidret = ILLEGAL_GID;
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (uidret)
|
||||
|
Loading…
x
Reference in New Issue
Block a user