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