current_user.conn = NULL;
current_user.vuid = UID_FIELD_INVALID;
- current_user.need_chdir = false;
- current_user.done_chdir = false;
TALLOC_FREE(pass);
return false;
}
- current_user.need_chdir = conn->tcon_done;
- current_user.done_chdir = false;
-
- if (current_user.need_chdir) {
+ if (conn->tcon_done) {
ok = chdir_current_service(conn);
if (!ok) {
return false;
}
- current_user.done_chdir = true;
}
print_impersonation_info(conn);
current_user.conn = NULL;
current_user.vuid = UID_FIELD_INVALID;
- current_user.need_chdir = false;
- current_user.done_chdir = false;
return(True);
}
ctx_p->conn = current_user.conn;
ctx_p->vuid = current_user.vuid;
- ctx_p->need_chdir = current_user.need_chdir;
- ctx_p->done_chdir = current_user.done_chdir;
ctx_p->user_info = current_user_info;
DEBUG(4, ("push_conn_ctx(%llu) : conn_ctx_stack_ndx = %d\n",
ctx_p->user_info.unix_name,
ctx_p->user_info.domain);
- /*
- * Check if the current context did a chdir_current_service()
- * and restore the cwd_fname of the previous context
- * if needed.
- */
- if (current_user.done_chdir && ctx_p->need_chdir) {
- int ret;
-
- ret = vfs_ChDir(ctx_p->conn, ctx_p->conn->cwd_fsp->fsp_name);
- if (ret != 0) {
- DBG_ERR("vfs_ChDir() failed!\n");
- smb_panic("vfs_ChDir() failed!\n");
- }
- }
-
current_user.conn = ctx_p->conn;
current_user.vuid = ctx_p->vuid;
- current_user.need_chdir = ctx_p->need_chdir;
- current_user.done_chdir = ctx_p->done_chdir;
*ctx_p = (struct conn_ctx) {
.vuid = UID_FIELD_INVALID,
}
push_conn_ctx();
set_root_sec_ctx();
-
- current_user.need_chdir = false;
- current_user.done_chdir = false;
}
/* Unbecome the root user */