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