summaryrefslogtreecommitdiff
path: root/source3/smbd/vfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/vfs.c')
-rw-r--r--source3/smbd/vfs.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
index 1510bfcdd5..2ce61eed30 100644
--- a/source3/smbd/vfs.c
+++ b/source3/smbd/vfs.c
@@ -862,7 +862,7 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
DEBUG(3,("check_reduced_name: Component not a "
"directory in getting realpath for "
"%s\n", fname));
- return map_nt_error_from_unix(errno);
+ return NT_STATUS_OBJECT_PATH_NOT_FOUND;
case ENOENT:
{
TALLOC_CTX *ctx = talloc_tos();
@@ -893,10 +893,18 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname)
resolved_name = SMB_VFS_REALPATH(conn,tmp_fname,resolved_name_buf);
#endif
if (!resolved_name) {
+ NTSTATUS status = map_nt_error_from_unix(errno);
+
+ if (errno == ENOENT || errno == ENOTDIR) {
+ status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
+ }
+
DEBUG(3,("check_reduce_named: "
"couldn't get realpath for "
- "%s\n", fname));
- return map_nt_error_from_unix(errno);
+ "%s (%s)\n",
+ fname,
+ nt_errstr(status)));
+ return status;
}
tmp_fname = talloc_asprintf(ctx,
"%s/%s",