diff options
author | Jeremy Allison <jra@samba.org> | 2010-04-28 14:13:22 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-04-28 14:13:22 -0700 |
commit | ac09506d36ea3018f888775058901498ab6aa370 (patch) | |
tree | 53cfe0c1b6226777513e926da10e3495c95f5f0e /source3/smbd/smb2_setinfo.c | |
parent | 37e9019119326aca374d55c6379b13b5cd0f564a (diff) | |
download | samba-ac09506d36ea3018f888775058901498ab6aa370.tar.gz |
Connect set security descriptor into SMB2 code.
Jeremy.
Diffstat (limited to 'source3/smbd/smb2_setinfo.c')
-rw-r--r-- | source3/smbd/smb2_setinfo.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/source3/smbd/smb2_setinfo.c b/source3/smbd/smb2_setinfo.c index f6dbf78c214..410d9f72238 100644 --- a/source3/smbd/smb2_setinfo.c +++ b/source3/smbd/smb2_setinfo.c @@ -161,11 +161,12 @@ static struct tevent_req *smbd_smb2_setinfo_send(TALLOC_CTX *mem_ctx, uint32_t in_additional_information, uint64_t in_file_id_volatile) { - struct tevent_req *req; - struct smbd_smb2_setinfo_state *state; - struct smb_request *smbreq; + struct tevent_req *req = NULL; + struct smbd_smb2_setinfo_state *state = NULL; + struct smb_request *smbreq = NULL; connection_struct *conn = smb2req->tcon->compat_conn; - files_struct *fsp; + files_struct *fsp = NULL; + NTSTATUS status; req = tevent_req_create(mem_ctx, &state, struct smbd_smb2_setinfo_state); @@ -208,7 +209,6 @@ static struct tevent_req *smbd_smb2_setinfo_send(TALLOC_CTX *mem_ctx, char *data; int data_size; int ret_size = 0; - NTSTATUS status; file_info_level = in_file_info_class + 1000; @@ -285,7 +285,7 @@ static struct tevent_req *smbd_smb2_setinfo_send(TALLOC_CTX *mem_ctx, if (data_size > 0) { data = (char *)SMB_MALLOC_ARRAY(char, data_size); if (tevent_req_nomem(data, req)) { - + return tevent_req_post(req, ev); } memcpy(data, in_input_buffer.data, data_size); } @@ -308,6 +308,19 @@ static struct tevent_req *smbd_smb2_setinfo_send(TALLOC_CTX *mem_ctx, break; } + case 0x03:/* SMB2_SETINFO_SECURITY */ + { + status = set_sd(fsp, + in_input_buffer.data, + in_input_buffer.length, + in_additional_information); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return tevent_req_post(req, ev); + } + break; + } + default: tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER); return tevent_req_post(req, ev); |