* dir.cc (mkdir): Set security attributes correctly for
CreateDirectoryA () call if ntsec is on. Don't call set_file_attributes () then. * fhandler.cc (fhandler_base::open): Ditto for CreateFileA () call. * path.cc (symlink): Ditto. * security.cc (set_security_attribute): New function. * security.h: Add declaration for `allow_ntea' and `set_security_attribute'.
This commit is contained in:
@@ -1553,6 +1553,23 @@ alloc_sd (uid_t uid, gid_t gid, const char *logsrv, int attribute,
|
||||
return psd;
|
||||
}
|
||||
|
||||
void
|
||||
set_security_attribute (int attribute, PSECURITY_ATTRIBUTES psa,
|
||||
void *sd_buf, DWORD sd_buf_size)
|
||||
{
|
||||
/* symlinks are anything for everyone!*/
|
||||
if ((attribute & S_IFLNK) == S_IFLNK)
|
||||
attribute |= S_IRWXU | S_IRWXG | S_IRWXO;
|
||||
|
||||
psa->lpSecurityDescriptor = sd_buf;
|
||||
InitializeSecurityDescriptor ((PSECURITY_DESCRIPTOR)sd_buf,
|
||||
SECURITY_DESCRIPTOR_REVISION);
|
||||
psa->lpSecurityDescriptor = alloc_sd (geteuid (), getegid (),
|
||||
cygheap->user.logsrv (),
|
||||
attribute, (PSECURITY_DESCRIPTOR)sd_buf,
|
||||
&sd_buf_size);
|
||||
}
|
||||
|
||||
static int
|
||||
set_nt_attribute (const char *file, uid_t uid, gid_t gid,
|
||||
const char *logsrv, int attribute)
|
||||
@@ -1583,10 +1600,6 @@ set_file_attribute (int use_ntsec, const char *file,
|
||||
uid_t uid, gid_t gid,
|
||||
int attribute, const char *logsrv)
|
||||
{
|
||||
/* symlinks are anything for everyone!*/
|
||||
if ((attribute & S_IFLNK) == S_IFLNK)
|
||||
attribute |= S_IRWXU | S_IRWXG | S_IRWXO;
|
||||
|
||||
int ret = 0;
|
||||
|
||||
if (use_ntsec && allow_ntsec)
|
||||
|
Reference in New Issue
Block a user