]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: use canonicalize_connect_path() in create_conn_struct_as_root()
authorRalph Boehme <slow@samba.org>
Thu, 19 Mar 2020 10:19:48 +0000 (11:19 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 24 Mar 2020 19:48:40 +0000 (19:48 +0000)
This fix ensures create_conn_struct_as_root() works the same way as
make_connection_snum() used in smbd for SMB sessions. Without this any caller of
create_conn_struct_as_root() will fail to use work on shares if the sharepath
contains a symlink.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/msdfs.c

index ae2a89c3faa927d5cfbe13472601296332ba2bd5..9bac6f6f81ff7ae67ee34bb1003f23157ee10a99 100644 (file)
@@ -357,6 +357,14 @@ static NTSTATUS create_conn_struct_as_root(TALLOC_CTX *ctx,
                return NT_STATUS_UNSUCCESSFUL;
        }
 
+       if (!lp_widelinks(snum)) {
+               if (!canonicalize_connect_path(conn)) {
+                       DBG_ERR("Failed to canonicalize sharepath\n");
+                       conn_free(conn);
+                       return NT_STATUS_ACCESS_DENIED;
+               }
+       }
+
        talloc_free(conn->origpath);
        conn->origpath = talloc_strdup(conn, conn->connectpath);
        if (conn->origpath == NULL) {