fixed parsing of the SMB2 ALL_INFO qfileinfo level
authorAndrew Tridgell <tridge@samba.org>
Thu, 22 May 2008 04:49:21 +0000 (14:49 +1000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 22 May 2008 04:49:21 +0000 (14:49 +1000)
(This used to be commit a7be5ba22e0cf2c61501f5a05e64673f31ba145c)

source4/libcli/raw/interfaces.h
source4/libcli/raw/rawfileinfo.c
source4/smb_server/blob.c

index 3370021d48e4538f70d9462a2f162f3b5c6baac2..bae0e67b02e0b89ae359c9b3feae20c30c7fc6ad 100644 (file)
@@ -684,7 +684,8 @@ union smb_fileinfo {
                        uint32_t ea_size;
                        uint32_t access_mask;
                        uint64_t position;
-                       uint64_t mode;
+                       uint32_t mode;
+                       uint32_t alignment_requirement;
                        struct smb_wire_string fname;
                } out;
        } all_info2;
index 71900be49cde5ccb5a29f6695f876d68706260a0..0ea5a93606d23ed6408a0ae2209fbfe3a219e922 100644 (file)
@@ -243,7 +243,8 @@ NTSTATUS smb_raw_fileinfo_passthru_parse(const DATA_BLOB *blob, TALLOC_CTX *mem_
                parms->all_info2.out.ea_size        = IVAL(blob->data, 0x48);
                parms->all_info2.out.access_mask    = IVAL(blob->data, 0x4C);
                parms->all_info2.out.position       = BVAL(blob->data, 0x50);
-               parms->all_info2.out.mode           = BVAL(blob->data, 0x58);
+               parms->all_info2.out.mode           = IVAL(blob->data, 0x58);
+               parms->all_info2.out.alignment_requirement = IVAL(blob->data, 0x5C);
                smbcli_blob_pull_string(NULL, mem_ctx, blob,
                                        &parms->all_info2.out.fname, 0x60, 0x64, STR_UNICODE);
                return NT_STATUS_OK;
index 8834c4483c1e2b2562d1ff8c6ca1c0848454ec45..65cdd2aea646e81ef1c1256b8398b415a85aae92 100644 (file)
@@ -503,7 +503,8 @@ NTSTATUS smbsrv_push_passthru_fileinfo(TALLOC_CTX *mem_ctx,
                SIVAL(blob->data,       0x48, st->all_info2.out.ea_size);
                SIVAL(blob->data,       0x4C, st->all_info2.out.access_mask);
                SBVAL(blob->data,       0x50, st->all_info2.out.position);
-               SBVAL(blob->data,       0x58, st->all_info2.out.mode);
+               SIVAL(blob->data,       0x58, st->all_info2.out.mode);
+               SIVAL(blob->data,       0x5C, st->all_info2.out.alignment_requirement);
                BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob,
                                                     st->all_info2.out.fname.s,
                                                     0x60, default_str_flags,