r21227: Quick fix for Stevef - ensure the returned data on open
authorJeremy Allison <jra@samba.org>
Thu, 8 Feb 2007 00:14:37 +0000 (00:14 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:17:49 +0000 (12:17 -0500)
is 8 byte aligned.
Jeremy.

source/include/trans2.h
source/smbd/trans2.c

index 5a3b25de4d4ef655ab84d8e0a9caf3d4d2531ccb..fb8e7716abe99d15f7a11a352b03e4c9245dc615 100644 (file)
@@ -394,6 +394,8 @@ Offset Size         Name
 100 - end.
 */
 
+#define SMB_FILE_UNIX_BASIC_SIZE 100
+
 /* UNIX filetype mappings. */
 
 #define UNIX_TYPE_FILE 0
index 66f16a52bbe60f07ff8d8525d0c5cd6ede054074..bab94b1c7d9c63c88d552ddd9e060a7c5516e94f 100644 (file)
@@ -4914,9 +4914,9 @@ static NTSTATUS smb_posix_mkdir(connection_struct *conn,
        info_level_return = SVAL(pdata,12);
  
        if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
-               *pdata_return_size = 6;
+               *pdata_return_size = 8 + SMB_FILE_UNIX_BASIC_SIZE;
        } else {
-               *pdata_return_size = 6;
+               *pdata_return_size = 8;
        }
 
        /* Realloc the data size */
@@ -4931,9 +4931,11 @@ static NTSTATUS smb_posix_mkdir(connection_struct *conn,
 
        if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
                SSVAL(pdata,4,SMB_QUERY_FILE_UNIX_BASIC);
-               store_file_unix_basic(pdata + 6, fsp, psbuf);
+               SSVAL(pdata,6,0); /* Padding. */
+               store_file_unix_basic(pdata + 8, fsp, psbuf);
        } else {
                SSVAL(pdata,4,SMB_NO_INFO_LEVEL_RETURNED);
+               SSVAL(pdata,6,0); /* Padding. */
        }
 
        return status;
@@ -5067,9 +5069,9 @@ static NTSTATUS smb_posix_open(connection_struct *conn,
        info_level_return = SVAL(pdata,12);
  
        if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
-               *pdata_return_size = 6;
+               *pdata_return_size = 8 + SMB_FILE_UNIX_BASIC_SIZE;
        } else {
-               *pdata_return_size = 6;
+               *pdata_return_size = 8;
        }
 
        /* Realloc the data size */
@@ -5095,9 +5097,11 @@ static NTSTATUS smb_posix_open(connection_struct *conn,
        SSVAL(pdata,2,fsp->fnum);
        if (info_level_return == SMB_QUERY_FILE_UNIX_BASIC) {
                SSVAL(pdata,4,SMB_QUERY_FILE_UNIX_BASIC);
-               store_file_unix_basic(pdata + 6, fsp, psbuf);
+               SSVAL(pdata,6,0); /* padding. */
+               store_file_unix_basic(pdata + 8, fsp, psbuf);
        } else {
                SSVAL(pdata,4,SMB_NO_INFO_LEVEL_RETURNED);
+               SSVAL(pdata,6,0); /* padding. */
        }
        return NT_STATUS_OK;
 }