uint32_t len;
char *newname = NULL;
struct smb_filename *smb_fname_dst = NULL;
+ const char *dst_original_lcomp = NULL;
bool dest_has_wcard = False;
NTSTATUS status = NT_STATUS_OK;
char *p;
}
/*
- * Set the original last component, since
+ * Get the original last component, since
* rename_internals_fsp() requires it.
*/
- smb_fname_dst->original_lcomp = talloc_strdup(smb_fname_dst,
- newname);
- if (smb_fname_dst->original_lcomp == NULL) {
+ dst_original_lcomp = get_original_lcomp(smb_fname_dst,
+ conn,
+ newname,
+ 0);
+ if (dst_original_lcomp == NULL) {
status = NT_STATUS_NO_MEMORY;
goto out;
}
goto out;
}
}
+ dst_original_lcomp = get_original_lcomp(smb_fname_dst,
+ conn,
+ newname,
+ ucf_flags);
+ if (dst_original_lcomp == NULL) {
+ status = NT_STATUS_NO_MEMORY;
+ goto out;
+ }
}
if (fsp) {
status = rename_internals_fsp(conn,
fsp,
smb_fname_dst,
- smb_fname_dst->original_lcomp,
+ dst_original_lcomp,
0,
overwrite);
} else {
req,
smb_fname_src,
smb_fname_dst,
- smb_fname_dst->original_lcomp,
+ dst_original_lcomp,
0,
overwrite,
false,