uint16_t additional_flags2 = 0;
uint8_t *bytes = NULL;
char *fname_src_cp = NULL;
- NTSTATUS status;
+ char *fname_dst_cp = NULL;
req = tevent_req_create(mem_ctx, &state,
struct cli_ntrename_internal_state);
return NULL;
}
- /*
- * Strip a MSDFS path from fname_dst if we were given one.
- */
- status = cli_dfs_target_check(state,
- cli,
- fname_dst,
- &fname_dst);
- if (tevent_req_nterror(req, status)) {
- return tevent_req_post(req, ev);
- }
-
SSVAL(state->vwv+0, 0 ,FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY);
SSVAL(state->vwv+1, 0, rename_flag);
return tevent_req_post(req, ev);
}
+ /*
+ * SMBntrename on a DFS share uses DFS names for src and dst.
+ * See smbtorture3: SMB1-DFS-PATHS: test_smb1_ntrename_rename().
+ * and smbtorture3: SMB1-DFS-PATHS: test_smb1_ntrename_hardlink()
+ */
+ fname_dst_cp = smb1_dfs_share_path(state, cli, fname_dst);
+ if (tevent_req_nomem(fname_dst_cp, req)) {
+ return tevent_req_post(req, ev);
+ }
bytes[talloc_get_size(bytes)-1] = 4;
- bytes = smb_bytes_push_str(bytes, smbXcli_conn_use_unicode(cli->conn), fname_dst,
- strlen(fname_dst)+1, NULL);
+ bytes = smb_bytes_push_str(bytes,
+ smbXcli_conn_use_unicode(cli->conn),
+ fname_dst_cp,
+ strlen(fname_dst_cp)+1,
+ NULL);
if (tevent_req_nomem(bytes, req)) {
return tevent_req_post(req, ev);
}