diff options
Diffstat (limited to 'source3/modules/onefs_open.c')
-rw-r--r-- | source3/modules/onefs_open.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c index dc8bf10a94..7d4379f1fc 100644 --- a/source3/modules/onefs_open.c +++ b/source3/modules/onefs_open.c @@ -2058,16 +2058,27 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle, /* Convert dos path to unix path if it hasn't already been done. */ if (create_file_flags & CFF_DOS_PATH) { + struct smb_filename *smb_fname = NULL; char *converted_fname; SET_STAT_INVALID(sbuf); - status = unix_convert(talloc_tos(), conn, fname, False, - &converted_fname, NULL, &sbuf); + status = unix_convert(talloc_tos(), conn, fname, &smb_fname, + 0); if (!NT_STATUS_IS_OK(status)) { goto fail; } + + status = get_full_smb_filename(talloc_tos(), &smb_fname, + &converted_fname); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(smb_fname); + goto fail; + } + + sbuf = smb_fname->st; fname = converted_fname; + TALLOC_FREE(smb_fname); } else { if (psbuf != NULL) { sbuf = *psbuf; |