const char *path,
SMB_STRUCT_STAT *sbufp);
NTSTATUS get_referred_path(TALLOC_CTX *ctx,
+ struct auth_serversupplied_info *server_info,
const char *dfs_path,
struct junction_map *jucn,
int *consumedcntp,
NDR_CHECK(ndr_push_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_push_dom_sid(ndr, NDR_BUFFERS, &r->domain_sid));
}
ndr->flags = _flags_save_STRUCT;
}
NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
}
if (ndr_flags & NDR_BUFFERS) {
- NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_BUFFERS, &r->domain_sid));
}
ndr->flags = _flags_save_STRUCT;
}
}
/* The following call can change the cwd. */
- status = get_referred_path(ctx, r->in.path, jn,
+ status = get_referred_path(ctx, p->server_info, r->in.path, jn,
&consumedcnt, &self_ref);
if(!NT_STATUS_IS_OK(status)) {
return ntstatus_to_werror(status);
r->in.dfs_entry_path, r->in.servername, r->in.sharename));
}
- if(!NT_STATUS_IS_OK(get_referred_path(ctx, r->in.dfs_entry_path, jn,
- &consumedcnt, &self_ref))) {
+ if(!NT_STATUS_IS_OK(get_referred_path(ctx, p->server_info,
+ r->in.dfs_entry_path, jn,
+ &consumedcnt, &self_ref))) {
return WERR_DFS_NO_SUCH_VOL;
}
}
/* The following call can change the cwd. */
- if(!NT_STATUS_IS_OK(get_referred_path(ctx, r->in.dfs_entry_path,
- jn, &consumedcnt, &self_ref)) ||
+ if(!NT_STATUS_IS_OK(get_referred_path(ctx, p->server_info,
+ r->in.dfs_entry_path,
+ jn, &consumedcnt, &self_ref)) ||
consumedcnt < strlen(r->in.dfs_entry_path)) {
return WERR_DFS_NO_SUCH_VOL;
}
**********************************************************************/
NTSTATUS get_referred_path(TALLOC_CTX *ctx,
+ struct auth_serversupplied_info *server_info,
const char *dfs_path,
struct junction_map *jucn,
int *consumedcntp,
}
status = create_conn_struct(ctx, &conn, snum, lp_pathname(snum),
- NULL, &oldpath);
+ server_info, &oldpath);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(pdp);
return status;
}
/* The following call can change cwd. */
- *pstatus = get_referred_path(ctx, pathnamep, junction,
- &consumedcnt, &self_referral);
+ *pstatus = get_referred_path(ctx, orig_conn->server_info,
+ pathnamep, junction,
+ &consumedcnt, &self_referral);
if (!NT_STATUS_IS_OK(*pstatus)) {
vfs_ChDir(orig_conn,orig_conn->connectpath);
talloc_destroy(ctx);