diff options
Diffstat (limited to 'source4/smbd/trans2.c')
-rw-r--r-- | source4/smbd/trans2.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source4/smbd/trans2.c b/source4/smbd/trans2.c index 19f313a860..6a15aad137 100644 --- a/source4/smbd/trans2.c +++ b/source4/smbd/trans2.c @@ -202,6 +202,7 @@ static NTSTATUS trans2_qfsinfo(struct request_context *req, struct smb_trans2 *t NTSTATUS status; uint16 level; uint_t i; + DATA_BLOB guid_blob; /* make sure we got enough parameters */ if (trans->in.params.length != 2) { @@ -369,7 +370,15 @@ static NTSTATUS trans2_qfsinfo(struct request_context *req, struct smb_trans2 *t trans2_setup_reply(req, trans, 0, 64, 0); - memcpy(trans->out.data.data, fsinfo.objectid_information.out.guid.info, GUID_SIZE); + status = ndr_push_struct_blob(&guid_blob, req->mem_ctx, + &fsinfo.objectid_information.out.guid, + (ndr_push_flags_fn_t)ndr_push_GUID); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + memcpy(trans->out.data.data, guid_blob.data, GUID_SIZE); + for (i=0;i<6;i++) { SBVAL(trans->out.data.data, 16 + 8*i, fsinfo.objectid_information.out.unknown[i]); } |