Changeset 751 for trunk/server/source3/smbd/smb2_create.c
- Timestamp:
- Nov 29, 2012, 1:59:04 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/source3/smbd/smb2_create.c
r745 r751 101 101 const uint8_t *inbody; 102 102 int i = smb2req->current_idx; 103 size_t expected_body_size = 0x39;104 size_t body_size;105 103 uint8_t in_oplock_level; 106 104 uint32_t in_impersonation_level; … … 128 126 struct tevent_req *tsubreq; 129 127 130 if (smb2req->in.vector[i+1].iov_len != (expected_body_size & 0xFFFFFFFE)) {131 return smbd_smb2_request_error(smb2req, NT_STATUS_INVALID_PARAMETER);132 }133 128 status = smbd_smb2_request_verify_sizes(smb2req, 0x39); 129 if (!NT_STATUS_IS_OK(status)) { 130 return smbd_smb2_request_error(smb2req, status); 131 } 134 132 inbody = (const uint8_t *)smb2req->in.vector[i+1].iov_base; 135 136 body_size = SVAL(inbody, 0x00);137 if (body_size != expected_body_size) {138 return smbd_smb2_request_error(smb2req, NT_STATUS_INVALID_PARAMETER);139 }140 133 141 134 in_oplock_level = CVAL(inbody, 0x03); … … 159 152 */ 160 153 161 dyn_offset = SMB2_HDR_BODY + (body_size & 0xFFFFFFFE);154 dyn_offset = SMB2_HDR_BODY + smb2req->in.vector[i+1].iov_len; 162 155 163 156 if (in_name_offset == 0 && in_name_length == 0) { … … 218 211 if (!ok) { 219 212 return smbd_smb2_request_error(smb2req, NT_STATUS_ILLEGAL_CHARACTER); 213 } 214 215 if (in_name_buffer.length == 0) { 216 in_name_string_size = 0; 217 } 218 219 if (strlen(in_name_string) != in_name_string_size) { 220 return smbd_smb2_request_error(smb2req, NT_STATUS_OBJECT_NAME_INVALID); 220 221 } 221 222 … … 386 387 struct smbd_smb2_request *smb2req; 387 388 struct smb_request *smb1req; 389 bool open_was_deferred; 388 390 struct timed_event *te; 389 391 struct tevent_immediate *im; … … 538 540 if (exta) { 539 541 if (dhnc) { 540 tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);542 tevent_req_nterror(req,NT_STATUS_OBJECT_NAME_NOT_FOUND); 541 543 return tevent_req_post(req, ev); 542 544 } … … 553 555 if (mxac) { 554 556 if (dhnc) { 555 tevent_req_nterror(req, NT_STATUS_ INVALID_PARAMETER);557 tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND); 556 558 return tevent_req_post(req, ev); 557 559 } … … 571 573 572 574 if (dhnc) { 573 tevent_req_nterror(req, NT_STATUS_ INVALID_PARAMETER);575 tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND); 574 576 return tevent_req_post(req, ev); 575 577 } … … 593 595 if (dhnq) { 594 596 if (dhnc) { 595 tevent_req_nterror(req, NT_STATUS_ INVALID_PARAMETER);597 tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND); 596 598 return tevent_req_post(req, ev); 597 599 } … … 619 621 if (alsi) { 620 622 if (dhnc) { 621 tevent_req_nterror(req, NT_STATUS_ INVALID_PARAMETER);623 tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND); 622 624 return tevent_req_post(req, ev); 623 625 } … … 636 638 637 639 if (dhnc) { 638 tevent_req_nterror(req, NT_STATUS_ INVALID_PARAMETER);640 tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND); 639 641 return tevent_req_post(req, ev); 640 642 } … … 821 823 result->fsp_name)); 822 824 state->out_allocation_size = 823 result->fsp_name->st.st_ex_blksize *824 result->fsp_name->st.st_ex_blocks;825 SMB_VFS_GET_ALLOC_SIZE(smb1req->conn, result, 826 &(result->fsp_name->st)); 825 827 state->out_end_of_file = result->fsp_name->st.st_ex_size; 826 828 if (state->out_file_attributes == 0) { 827 829 state->out_file_attributes = FILE_ATTRIBUTE_NORMAL; 828 830 } 829 state->out_file_id_persistent = result->fnum;831 state->out_file_id_persistent = fsp_persistent_id(result); 830 832 state->out_file_id_volatile = result->fnum; 831 833 state->out_context_blobs = out_context_blobs; … … 964 966 } 965 967 /* It's not in progress if there's no timeout event. */ 966 if (!state-> te) {968 if (!state->open_was_deferred) { 967 969 return false; 968 970 } … … 995 997 (unsigned long long)mid )); 996 998 999 state->open_was_deferred = false; 997 1000 /* Ensure we don't have any outstanding timer event. */ 998 1001 TALLOC_FREE(state->te); … … 1238 1241 true) )); 1239 1242 1243 state->open_was_deferred = true; 1240 1244 state->te = event_add_timed(smb2req->sconn->smb2.event_ctx, 1241 1245 state,
Note:
See TracChangeset
for help on using the changeset viewer.