#include "smbd/globals.h"
#include "msdfs.h"
#include "auth.h"
+#include "../auth/auth_util.h"
#include "lib/param/loadparm.h"
#include "libcli/security/security.h"
#include "librpc/gen_ndr/ndr_dfsblobs.h"
*********************************************************/
static NTSTATUS create_conn_struct_as_root(TALLOC_CTX *ctx,
- struct tevent_context *ev,
struct messaging_context *msg,
connection_struct **pconn,
int snum,
return NT_STATUS_NO_MEMORY;
}
- sconn->ev_ctx = ev;
+ sconn->ev_ctx = samba_tevent_context_init(sconn);
+ if (sconn->ev_ctx == NULL) {
+ TALLOC_FREE(sconn);
+ return NT_STATUS_NO_MEMORY;
+ }
+
sconn->msg_ctx = msg;
conn = conn_new(sconn);
TALLOC_FREE(conn);
return NT_STATUS_NO_MEMORY;
}
- vfs_user = conn->session_info->unix_info->unix_name;
+ /* unix_info could be NULL in session_info */
+ if (conn->session_info->unix_info != NULL) {
+ vfs_user = conn->session_info->unix_info->unix_name;
+ } else {
+ vfs_user = get_current_username();
+ }
} else {
/* use current authenticated user in absence of session_info */
vfs_user = get_current_username();
return NT_STATUS_UNSUCCESSFUL;
}
+ talloc_free(conn->origpath);
+ conn->origpath = talloc_strdup(conn, conn->connectpath);
+ if (conn->origpath == NULL) {
+ conn_free(conn);
+ return NT_STATUS_NO_MEMORY;
+ }
+
conn->fs_capabilities = SMB_VFS_FS_CAPABILITIES(conn, &conn->ts_res);
+ conn->tcon_done = true;
*pconn = talloc_move(ctx, &conn);
return NT_STATUS_OK;
struct conn_struct_tos **_c)
{
struct conn_struct_tos *c = NULL;
- struct tevent_context *ev = NULL;
NTSTATUS status;
*_c = NULL;
return NT_STATUS_NO_MEMORY;
}
- ev = samba_tevent_context_init(c);
- if (ev == NULL) {
- TALLOC_FREE(c);
- return NT_STATUS_NO_MEMORY;
- }
-
become_root();
status = create_conn_struct_as_root(c,
- ev,
msg,
&c->conn,
snum,
return NT_STATUS_OK;
}
- status = create_conn_struct_tos_cwd(server_messaging_context(),
+ status = create_conn_struct_tos_cwd(global_messaging_context(),
snum,
lp_path(frame, snum),
NULL,
if(snum < 0) {
return False;
}
- status = create_conn_struct_tos_cwd(server_messaging_context(),
+ status = create_conn_struct_tos_cwd(global_messaging_context(),
snum,
lp_path(talloc_tos(), snum),
NULL,
* Fake up a connection struct for the VFS layer.
*/
- status = create_conn_struct_tos_cwd(server_messaging_context(),
+ status = create_conn_struct_tos_cwd(global_messaging_context(),
snum,
connect_path,
NULL,
* Fake up a connection struct for the VFS layer.
*/
- status = create_conn_struct_tos_cwd(server_messaging_context(),
+ status = create_conn_struct_tos_cwd(global_messaging_context(),
snum,
connect_path,
NULL,