Fix MSDFS bug noticed by Ofir Azoulay <Ofir.Azoulay@expand.com>.
authorJeremy Allison <jra@samba.org>
Wed, 2 Apr 2008 18:23:36 +0000 (11:23 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 2 Apr 2008 18:23:36 +0000 (11:23 -0700)
There is no reason to ensure the target host is ourselves, and
this breaks MS clients in some cases.
Jeremy.
(This used to be commit c19fdf43d16ce9fba3e8e12e6192bac31837715e)

source3/smbd/msdfs.c

index 8ffa0f7751cb4ce1cd0d1d0c9cb0a2143ab71da4..fb757a5f7469f76e9385c0ca64de2c0be3f71fa1 100644 (file)
@@ -127,28 +127,6 @@ static NTSTATUS parse_dfs_path(const char *pathname,
 
        DEBUG(10,("parse_dfs_path: hostname: %s\n",pdp->hostname));
 
-       /* If we got a hostname, is it ours (or an IP address) ? */
-       if (!is_myname_or_ipaddr(pdp->hostname)) {
-               /* Repair path. */
-               *p = sepchar;
-               DEBUG(10,("parse_dfs_path: hostname %s isn't ours. "
-                       "Try local path from path %s\n",
-                       pdp->hostname, temp));
-               /*
-                * Possibly client sent a local path by mistake.
-                * Try and convert to a local path.
-                */
-
-               pdp->hostname = eos_ptr; /* "" */
-               pdp->servicename = eos_ptr; /* "" */
-
-               p = temp;
-               DEBUG(10,("parse_dfs_path: trying to convert %s "
-                       "to a local path\n",
-                       temp));
-               goto local_path;
-       }
-
        /* Parse out servicename. */
        temp = p+1;
        p = strchr_m(temp,sepchar);
@@ -751,14 +729,6 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx,
                return status;
        }
 
-       /* Verify hostname in path */
-       if (!is_myname_or_ipaddr(pdp->hostname)) {
-               DEBUG(3, ("get_referred_path: Invalid hostname %s in path %s\n",
-                       pdp->hostname, dfs_path));
-               TALLOC_FREE(pdp);
-               return NT_STATUS_NOT_FOUND;
-       }
-
        jucn->service_name = talloc_strdup(ctx, pdp->servicename);
        jucn->volume_name = talloc_strdup(ctx, pdp->reqpath);
        if (!jucn->service_name || !jucn->volume_name) {