summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2010-02-12 18:17:32 -0800
committerJeremy Allison <jra@samba.org>2010-02-12 18:17:32 -0800
commit1f89ffd0357bd226fc599f527b0570b3eba9f2b9 (patch)
treea11ac030da780ee6cffc993c1b297975b28132c9 /source3
parent2fdd8b10c6abadd27c579e772c0482214d2363a5 (diff)
downloadsamba-1f89ffd0357bd226fc599f527b0570b3eba9f2b9.tar.gz
samba-1f89ffd0357bd226fc599f527b0570b3eba9f2b9.tar.bz2
samba-1f89ffd0357bd226fc599f527b0570b3eba9f2b9.zip
Revert "Fix bug #7126 - [SMBD] With access denied error smbd return wrong NT_STATUS_OBJECT_PATH_INVALID error"
This reverts commit 2fdd8b10c6abadd27c579e772c0482214d2363a5. This fix is incorrect. The original code works as desired, I made a mistake here. Jeremy.
Diffstat (limited to 'source3')
-rw-r--r--source3/smbd/service.c25
1 files changed, 9 insertions, 16 deletions
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index 6e57e1f0d5..d8ba4fee65 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -1019,27 +1019,20 @@ connection_struct *make_connection_snum(struct smbd_server_connection *sconn,
check during individual operations. To match this behaviour
I have disabled this chdir check (tridge) */
/* the alternative is just to check the directory exists */
- if (SMB_VFS_STAT(conn, smb_fname_cpath) == 0) {
- if (!S_ISDIR(smb_fname_cpath->st.st_ex_mode)) {
+ if ((ret = SMB_VFS_STAT(conn, smb_fname_cpath)) != 0 ||
+ !S_ISDIR(smb_fname_cpath->st.st_ex_mode)) {
+ if (ret == 0 && !S_ISDIR(smb_fname_cpath->st.st_ex_mode)) {
DEBUG(0,("'%s' is not a directory, when connecting to "
"[%s]\n", conn->connectpath,
lp_servicename(snum)));
- *pstatus = NT_STATUS_BAD_NETWORK_NAME;
- goto err_root_exit;
- }
- } else {
- /* Stat failed. Bail on any error except permission denied. */
- if (errno != EACCES) {
- DEBUG(0,("Connecting to share [%s], path '%s' "
- "gives error %s\n",
- lp_servicename(snum),
- conn->connectpath,
+ } else {
+ DEBUG(0,("'%s' does not exist or permission denied "
+ "when connecting to [%s] Error was %s\n",
+ conn->connectpath, lp_servicename(snum),
strerror(errno) ));
- *pstatus = NT_STATUS_BAD_NETWORK_NAME;
- goto err_root_exit;
}
- /* As Windows does, on permsission denied we continue.
- * Pathname calls fail, not TconX calls. */
+ *pstatus = NT_STATUS_BAD_NETWORK_NAME;
+ goto err_root_exit;
}
string_set(&conn->origpath,conn->connectpath);