svn commit: samba r8087 - in trunk/source: include smbd

jra at samba.org jra at samba.org
Sun Jul 3 00:34:22 GMT 2005


Author: jra
Date: 2005-07-03 00:34:21 +0000 (Sun, 03 Jul 2005)
New Revision: 8087

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8087

Log:
Get closer to passing the Samba4 deny tests. The added code in
share_conflict() was checking the same things twice (ie.
access_mask, share_mode, entry->access_mask, entry->share_mode
instead of reversing the access_mask and entry->access_mask in
each subsequent macro. Still fails tests but getting closer.
Jeremy.

Modified:
   trunk/source/include/smb.h
   trunk/source/smbd/open.c


Changeset:
Modified: trunk/source/include/smb.h
===================================================================
--- trunk/source/include/smb.h	2005-07-03 00:05:52 UTC (rev 8086)
+++ trunk/source/include/smb.h	2005-07-03 00:34:21 UTC (rev 8087)
@@ -1071,18 +1071,18 @@
 #define DESIRED_ACCESS_PIPE 0x2019f
  
 /* Generic access masks & rights. */
-#define DELETE_ACCESS        (1L<<16) /* 0x00010000 */
-#define READ_CONTROL_ACCESS  (1L<<17) /* 0x00020000 */
-#define WRITE_DAC_ACCESS     (1L<<18) /* 0x00040000 */
-#define WRITE_OWNER_ACCESS   (1L<<19) /* 0x00080000 */
-#define SYNCHRONIZE_ACCESS   (1L<<20) /* 0x00100000 */
+#define DELETE_ACCESS        0x00010000 /* (1L<<16) */
+#define READ_CONTROL_ACCESS  0x00020000 /* (1L<<17) */
+#define WRITE_DAC_ACCESS     0x00040000 /* (1L<<18) */
+#define WRITE_OWNER_ACCESS   0x00080000 /* (1L<<19) */
+#define SYNCHRONIZE_ACCESS   0x00100000 /* (1L<<20) */
 
-#define SYSTEM_SECURITY_ACCESS (1L<<24)           /* 0x01000000 */
-#define MAXIMUM_ALLOWED_ACCESS (1L<<25)           /* 0x02000000 */
-#define GENERIC_ALL_ACCESS     (1<<28)            /* 0x10000000 */
-#define GENERIC_EXECUTE_ACCESS (1<<29)            /* 0x20000000 */
-#define GENERIC_WRITE_ACCESS   (1<<30)            /* 0x40000000 */
-#define GENERIC_READ_ACCESS   (((unsigned)1)<<31) /* 0x80000000 */
+#define SYSTEM_SECURITY_ACCESS 0x01000000 /* (1L<<24) */
+#define MAXIMUM_ALLOWED_ACCESS 0x02000000 /* (1L<<25) */
+#define GENERIC_ALL_ACCESS     0x10000000 /* (1<<28) */
+#define GENERIC_EXECUTE_ACCESS 0x20000000 /* (1<<29) */
+#define GENERIC_WRITE_ACCESS   0x40000000 /* (1<<30) */
+#define GENERIC_READ_ACCESS    ((unsigned)0x80000000) /* (((unsigned)1)<<31) */
 
 /* Mapping of generic access rights for files to specific rights. */
 

Modified: trunk/source/smbd/open.c
===================================================================
--- trunk/source/smbd/open.c	2005-07-03 00:05:52 UTC (rev 8086)
+++ trunk/source/smbd/open.c	2005-07-03 00:34:21 UTC (rev 8087)
@@ -388,6 +388,12 @@
 		return False;
 	}
 
+	DEBUG(10,("share_conflict: entry->access_mask = 0x%x, entry->share_access = 0x%x, entry->create_options = 0x%x\n",
+		(unsigned int)entry->access_mask, (unsigned int)entry->share_access, (unsigned int)entry->create_options));
+
+	DEBUG(10,("share_conflict: access_mask = 0x%x, share_access = 0x%x, create_options = 0x%x\n",
+		(unsigned int)access_mask, (unsigned int)share_access, (unsigned int)create_options));
+
 	if ((entry->access_mask & (FILE_WRITE_DATA|
 				   FILE_APPEND_DATA|
 				   FILE_READ_DATA|
@@ -409,6 +415,10 @@
 	}
 
 #define CHECK_MASK(num, am, right, sa, share) \
+	DEBUG(10,("share_conflict: [%d] am (0x%x) & right (0x%x) = 0x%x\n", \
+		(unsigned int)(num), (unsigned int)(am), (unsigned int)(right), (unsigned int)(am)&(right) )); \
+	DEBUG(10,("share_conflict: [%d] sa (0x%x) & share (0x%x) = 0x%x\n", \
+		(unsigned int)(num), (unsigned int)(sa), (unsigned int)(share), (unsigned int)(sa)&(share) )); \
 	if (((am) & (right)) && !((sa) & (share))) { \
 		DEBUG(10,("share_conflict: check %d conflict am = 0x%x, right = 0x%x, \
 sa = 0x%x, share = 0x%x\n", (num), (unsigned int)(am), (unsigned int)(right), (unsigned int)(sa), \
@@ -418,18 +428,18 @@
 
 	CHECK_MASK(1, entry->access_mask, FILE_WRITE_DATA | FILE_APPEND_DATA,
 		   share_access, FILE_SHARE_WRITE);
-	CHECK_MASK(2, entry->access_mask, FILE_WRITE_DATA | FILE_APPEND_DATA,
-		   share_access, FILE_SHARE_WRITE);
+	CHECK_MASK(2, access_mask, FILE_WRITE_DATA | FILE_APPEND_DATA,
+		   entry->share_access, FILE_SHARE_WRITE);
 	
 	CHECK_MASK(3, entry->access_mask, FILE_READ_DATA | FILE_EXECUTE,
 		   share_access, FILE_SHARE_READ);
-	CHECK_MASK(4, entry->access_mask, FILE_READ_DATA | FILE_EXECUTE,
-		   share_access, FILE_SHARE_READ);
+	CHECK_MASK(4, access_mask, FILE_READ_DATA | FILE_EXECUTE,
+		   entry->share_access, FILE_SHARE_READ);
 
 	CHECK_MASK(5, entry->access_mask, DELETE_ACCESS,
 		   share_access, FILE_SHARE_DELETE);
-	CHECK_MASK(6, entry->access_mask, DELETE_ACCESS,
-		   share_access, FILE_SHARE_DELETE);
+	CHECK_MASK(6, access_mask, DELETE_ACCESS,
+		   entry->share_access, FILE_SHARE_DELETE);
 
 	/* if a delete is pending then a second open is not allowed */
 	if ((entry->create_options & FILE_DELETE_ON_CLOSE) ||



More information about the samba-cvs mailing list