svn commit: samba r21777 - in branches: SAMBA_3_0/source/include SAMBA_3_0/source/libsmb SAMBA_3_0/source/smbd SAMBA_3_0_25/source/include SAMBA_3_0_25/source/libsmb SAMBA_3_0_25/source/smbd

jra at samba.org jra at samba.org
Fri Mar 9 18:33:17 GMT 2007


Author: jra
Date: 2007-03-09 18:33:16 +0000 (Fri, 09 Mar 2007)
New Revision: 21777

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

Log:
As Stevef requested and the Apple guys agreed, make
mode_t in posix_open/posix_mkdir -> 8 bytes to match
the SET_UNIX_INFO_BASIC call. Steve is updating the
Wikki.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/include/trans2.h
   branches/SAMBA_3_0/source/libsmb/clifile.c
   branches/SAMBA_3_0/source/smbd/trans2.c
   branches/SAMBA_3_0_25/source/include/trans2.h
   branches/SAMBA_3_0_25/source/libsmb/clifile.c
   branches/SAMBA_3_0_25/source/smbd/trans2.c


Changeset:
Modified: branches/SAMBA_3_0/source/include/trans2.h
===================================================================
--- branches/SAMBA_3_0/source/include/trans2.h	2007-03-09 16:55:56 UTC (rev 21776)
+++ branches/SAMBA_3_0/source/include/trans2.h	2007-03-09 18:33:16 UTC (rev 21777)
@@ -717,8 +717,8 @@
 /* Definition of request data block for SMB_POSIX_PATH_OPEN */
 /*
   [4 bytes] flags (as smb_ntcreate_Flags).
-  [4 bytes] open_mode
-  [4 bytes] mode_t		- same encoding as "Standard UNIX permissions" above.
+  [4 bytes] open_mode			- SMB_O_xxx flags above.
+  [8 bytes] mode_t (permissions)	- same encoding as "Standard UNIX permissions" above in SMB_SET_FILE_UNIX_BASIC.
   [2 bytes] ret_info_level	- optimization. Info level to be returned.
 */
 

Modified: branches/SAMBA_3_0/source/libsmb/clifile.c
===================================================================
--- branches/SAMBA_3_0/source/libsmb/clifile.c	2007-03-09 16:55:56 UTC (rev 21776)
+++ branches/SAMBA_3_0/source/libsmb/clifile.c	2007-03-09 18:33:16 UTC (rev 21777)
@@ -1839,7 +1839,7 @@
 	unsigned int param_len = 0;
 	uint16 setup = TRANSACT2_SETPATHINFO;
 	char param[sizeof(pstring)+6];
-	char data[14];
+	char data[18];
 	char *rparam=NULL, *rdata=NULL;
 	char *p;
 	int fnum = -1;
@@ -1861,9 +1861,10 @@
 	SIVAL(p,0,0); /* No oplock. */
 	SIVAL(p,4,wire_flags);
 	SIVAL(p,8,unix_perms_to_wire(mode));
-	SSVAL(p,12,SMB_NO_INFO_LEVEL_RETURNED); /* No info level returned. */
+	SIVAL(p,12,0); /* Top bits of perms currently undefined. */
+	SSVAL(p,16,SMB_NO_INFO_LEVEL_RETURNED); /* No info level returned. */
 
-	data_len = 14;
+	data_len = 18;
 
 	if (!cli_send_trans(cli, SMBtrans2,
 		NULL,                        /* name */

Modified: branches/SAMBA_3_0/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/trans2.c	2007-03-09 16:55:56 UTC (rev 21776)
+++ branches/SAMBA_3_0/source/smbd/trans2.c	2007-03-09 18:33:16 UTC (rev 21777)
@@ -5229,11 +5229,13 @@
 	uint16 info_level_return = 0;
 	char *pdata = *ppdata;
 
-	if (total_data < 10) {
+	if (total_data < 18) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
 	raw_unixmode = IVAL(pdata,8);
+	/* Next 4 bytes are not yet defined. */
+
 	status = unix_perms_from_wire(conn, psbuf, raw_unixmode, PERM_NEW_DIR, &unixmode);
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
@@ -5259,7 +5261,7 @@
                 close_file(fsp, NORMAL_CLOSE);
         }
 
-	info_level_return = SVAL(pdata,12);
+	info_level_return = SVAL(pdata,16);
  
 	if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
 		*pdata_return_size = 8 + SMB_FILE_UNIX_BASIC_SIZE;
@@ -5321,7 +5323,7 @@
 	int info = 0;
 	uint16 info_level_return = 0;
 
-	if (total_data < 14) {
+	if (total_data < 18) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
@@ -5373,6 +5375,8 @@
 	}
 
 	raw_unixmode = IVAL(pdata,8);
+	/* Next 4 bytes are not yet defined. */
+
 	status = unix_perms_from_wire(conn,
 				psbuf,
 				raw_unixmode,
@@ -5424,7 +5428,7 @@
 		extended_oplock_granted = True;
 	}
 
-	info_level_return = SVAL(pdata,12);
+	info_level_return = SVAL(pdata,16);
  
 	if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
 		*pdata_return_size = 8 + SMB_FILE_UNIX_BASIC_SIZE;

Modified: branches/SAMBA_3_0_25/source/include/trans2.h
===================================================================
--- branches/SAMBA_3_0_25/source/include/trans2.h	2007-03-09 16:55:56 UTC (rev 21776)
+++ branches/SAMBA_3_0_25/source/include/trans2.h	2007-03-09 18:33:16 UTC (rev 21777)
@@ -662,8 +662,8 @@
 /* Definition of request data block for SMB_POSIX_PATH_OPEN */
 /*
   [4 bytes] flags (as smb_ntcreate_Flags).
-  [4 bytes] open_mode
-  [4 bytes] mode_t		- same encoding as "Standard UNIX permissions" above.
+  [4 bytes] open_mode			- SMB_O_xxx flags above.
+  [8 bytes] mode_t (permissions)	- same encoding as "Standard UNIX permissions" above in SMB_SET_FILE_UNIX_BASIC.
   [2 bytes] ret_info_level	- optimization. Info level to be returned.
 */
 

Modified: branches/SAMBA_3_0_25/source/libsmb/clifile.c
===================================================================
--- branches/SAMBA_3_0_25/source/libsmb/clifile.c	2007-03-09 16:55:56 UTC (rev 21776)
+++ branches/SAMBA_3_0_25/source/libsmb/clifile.c	2007-03-09 18:33:16 UTC (rev 21777)
@@ -1839,7 +1839,7 @@
 	unsigned int param_len = 0;
 	uint16 setup = TRANSACT2_SETPATHINFO;
 	char param[sizeof(pstring)+6];
-	char data[14];
+	char data[18];
 	char *rparam=NULL, *rdata=NULL;
 	char *p;
 	int fnum = -1;
@@ -1861,9 +1861,10 @@
 	SIVAL(p,0,0); /* No oplock. */
 	SIVAL(p,4,wire_flags);
 	SIVAL(p,8,unix_perms_to_wire(mode));
-	SSVAL(p,12,SMB_NO_INFO_LEVEL_RETURNED); /* No info level returned. */
+	SIVAL(p,12,0); /* Top bits of perms currently undefined. */
+	SSVAL(p,16,SMB_NO_INFO_LEVEL_RETURNED); /* No info level returned. */
 
-	data_len = 14;
+	data_len = 18;
 
 	if (!cli_send_trans(cli, SMBtrans2,
 		NULL,                        /* name */

Modified: branches/SAMBA_3_0_25/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0_25/source/smbd/trans2.c	2007-03-09 16:55:56 UTC (rev 21776)
+++ branches/SAMBA_3_0_25/source/smbd/trans2.c	2007-03-09 18:33:16 UTC (rev 21777)
@@ -5046,11 +5046,13 @@
 	uint16 info_level_return = 0;
 	char *pdata = *ppdata;
 
-	if (total_data < 10) {
+	if (total_data < 18) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
 	raw_unixmode = IVAL(pdata,8);
+	/* Next 4 bytes are not yet defined. */
+
 	status = unix_perms_from_wire(conn, psbuf, raw_unixmode, PERM_NEW_DIR, &unixmode);
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
@@ -5076,7 +5078,7 @@
                 close_file(fsp, NORMAL_CLOSE);
         }
 
-	info_level_return = SVAL(pdata,12);
+	info_level_return = SVAL(pdata,16);
  
 	if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
 		*pdata_return_size = 8 + SMB_FILE_UNIX_BASIC_SIZE;
@@ -5133,7 +5135,7 @@
 	int info = 0;
 	uint16 info_level_return = 0;
 
-	if (total_data < 14) {
+	if (total_data < 18) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
@@ -5185,6 +5187,8 @@
 	}
 
 	raw_unixmode = IVAL(pdata,8);
+	/* Next 4 bytes are not yet defined. */
+
 	status = unix_perms_from_wire(conn,
 				psbuf,
 				raw_unixmode,
@@ -5236,7 +5240,7 @@
 		extended_oplock_granted = True;
 	}
 
-	info_level_return = SVAL(pdata,12);
+	info_level_return = SVAL(pdata,16);
  
 	if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
 		*pdata_return_size = 8 + SMB_FILE_UNIX_BASIC_SIZE;



More information about the samba-cvs mailing list