svn commit: samba r3363 - in branches/SAMBA_4_0/source: include
ntvfs/common ntvfs/posix
tridge at samba.org
tridge at samba.org
Fri Oct 29 09:28:35 GMT 2004
Author: tridge
Date: 2004-10-29 09:28:35 +0000 (Fri, 29 Oct 2004)
New Revision: 3363
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3363
Log:
added basic support for SA_RIGHT_FILE_EXECUTE, needed for opening .dll files
Modified:
branches/SAMBA_4_0/source/include/rpc_secdes.h
branches/SAMBA_4_0/source/ntvfs/common/opendb.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_read.c
Changeset:
Modified: branches/SAMBA_4_0/source/include/rpc_secdes.h
===================================================================
--- branches/SAMBA_4_0/source/include/rpc_secdes.h 2004-10-29 09:19:54 UTC (rev 3362)
+++ branches/SAMBA_4_0/source/include/rpc_secdes.h 2004-10-29 09:28:35 UTC (rev 3363)
@@ -156,6 +156,7 @@
#define SA_RIGHT_FILE_DELETE_CHILD 0x00000040
#define SA_RIGHT_FILE_READ_ATTRIBUTES 0x00000080
#define SA_RIGHT_FILE_WRITE_ATTRIBUTES 0x00000100
+#define SA_RIGHT_FILE_READ_EXEC (SA_RIGHT_FILE_READ_DATA|SA_RIGHT_FILE_EXECUTE)
#define SA_RIGHT_FILE_ALL_ACCESS 0x000001FF
Modified: branches/SAMBA_4_0/source/ntvfs/common/opendb.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/common/opendb.c 2004-10-29 09:19:54 UTC (rev 3362)
+++ branches/SAMBA_4_0/source/ntvfs/common/opendb.c 2004-10-29 09:28:35 UTC (rev 3363)
@@ -154,10 +154,14 @@
/* if either open involves no read.write or delete access then
it can't conflict */
- if (!(e1->access_mask & (SA_RIGHT_FILE_WRITE_DATA | SA_RIGHT_FILE_READ_DATA | STD_RIGHT_DELETE_ACCESS))) {
+ if (!(e1->access_mask & (SA_RIGHT_FILE_WRITE_DATA |
+ SA_RIGHT_FILE_READ_EXEC |
+ STD_RIGHT_DELETE_ACCESS))) {
return False;
}
- if (!(e2->access_mask & (SA_RIGHT_FILE_WRITE_DATA | SA_RIGHT_FILE_READ_DATA | STD_RIGHT_DELETE_ACCESS))) {
+ if (!(e2->access_mask & (SA_RIGHT_FILE_WRITE_DATA |
+ SA_RIGHT_FILE_READ_EXEC |
+ STD_RIGHT_DELETE_ACCESS))) {
return False;
}
@@ -165,11 +169,19 @@
CHECK_MASK(e1->access_mask, e2->share_access, SA_RIGHT_FILE_WRITE_DATA, NTCREATEX_SHARE_ACCESS_WRITE);
CHECK_MASK(e2->access_mask, e1->share_access, SA_RIGHT_FILE_WRITE_DATA, NTCREATEX_SHARE_ACCESS_WRITE);
- CHECK_MASK(e1->access_mask, e2->share_access, SA_RIGHT_FILE_READ_DATA, NTCREATEX_SHARE_ACCESS_READ);
- CHECK_MASK(e2->access_mask, e1->share_access, SA_RIGHT_FILE_READ_DATA, NTCREATEX_SHARE_ACCESS_READ);
+ CHECK_MASK(e1->access_mask, e2->share_access,
+ SA_RIGHT_FILE_READ_EXEC,
+ NTCREATEX_SHARE_ACCESS_READ);
+ CHECK_MASK(e2->access_mask, e1->share_access,
+ SA_RIGHT_FILE_READ_EXEC,
+ NTCREATEX_SHARE_ACCESS_READ);
- CHECK_MASK(e1->access_mask, e2->share_access, STD_RIGHT_DELETE_ACCESS, NTCREATEX_SHARE_ACCESS_DELETE);
- CHECK_MASK(e2->access_mask, e1->share_access, STD_RIGHT_DELETE_ACCESS, NTCREATEX_SHARE_ACCESS_DELETE);
+ CHECK_MASK(e1->access_mask, e2->share_access,
+ STD_RIGHT_DELETE_ACCESS,
+ NTCREATEX_SHARE_ACCESS_DELETE);
+ CHECK_MASK(e2->access_mask, e1->share_access,
+ STD_RIGHT_DELETE_ACCESS,
+ NTCREATEX_SHARE_ACCESS_DELETE);
/* if a delete is pending then a second open is not allowed */
if ((e1->create_options & NTCREATEX_OPTIONS_DELETE_ON_CLOSE) ||
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c 2004-10-29 09:19:54 UTC (rev 3362)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c 2004-10-29 09:28:35 UTC (rev 3363)
@@ -289,16 +289,13 @@
access_mask = GENERIC_RIGHTS_FILE_READ | GENERIC_RIGHTS_FILE_WRITE;
}
- switch (access_mask & (SA_RIGHT_FILE_READ_DATA | SA_RIGHT_FILE_WRITE_DATA)) {
- case SA_RIGHT_FILE_READ_DATA:
- flags = O_RDONLY;
- break;
- case SA_RIGHT_FILE_WRITE_DATA:
- flags = O_WRONLY;
- break;
- case SA_RIGHT_FILE_WRITE_DATA|SA_RIGHT_FILE_READ_DATA:
+ if ((access_mask & SA_RIGHT_FILE_READ_EXEC) &&
+ (access_mask & SA_RIGHT_FILE_WRITE_DATA)) {
flags = O_RDWR;
- break;
+ } else if (access_mask & SA_RIGHT_FILE_WRITE_DATA) {
+ flags = O_WRONLY;
+ } else {
+ flags = O_RDONLY;
}
f = talloc_p(req, struct pvfs_file);
@@ -493,16 +490,13 @@
return NT_STATUS_INVALID_PARAMETER;
}
- switch (access_mask & (SA_RIGHT_FILE_READ_DATA | SA_RIGHT_FILE_WRITE_DATA)) {
- case SA_RIGHT_FILE_READ_DATA:
- flags |= O_RDONLY;
- break;
- case SA_RIGHT_FILE_WRITE_DATA:
- flags |= O_WRONLY;
- break;
- case SA_RIGHT_FILE_WRITE_DATA|SA_RIGHT_FILE_READ_DATA:
+ if ((access_mask & SA_RIGHT_FILE_READ_EXEC) &&
+ (access_mask & SA_RIGHT_FILE_WRITE_DATA)) {
flags |= O_RDWR;
- break;
+ } else if (access_mask & SA_RIGHT_FILE_WRITE_DATA) {
+ flags |= O_WRONLY;
+ } else {
+ flags |= O_RDONLY;
}
/* handle creating a new file separately */
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_read.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_read.c 2004-10-29 09:19:54 UTC (rev 3362)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_read.c 2004-10-29 09:28:35 UTC (rev 3363)
@@ -48,7 +48,7 @@
return NT_STATUS_FILE_IS_A_DIRECTORY;
}
- if (!(f->access_mask & SA_RIGHT_FILE_READ_DATA)) {
+ if (!(f->access_mask & SA_RIGHT_FILE_READ_EXEC)) {
return NT_STATUS_ACCESS_VIOLATION;
}
More information about the samba-cvs
mailing list