static WERROR dreplsrv_init_creds(struct dreplsrv_service *service) { NTSTATUS status; status = auth_system_session_info(service, service->task->lp_ctx, &service->system_session_info); if (!NT_STATUS_IS_OK(status)) { return ntstatus_to_werror(status); } return WERR_OK; }
static void ldapsrv_accept_priv(struct stream_connection *c) { struct ldapsrv_service *ldapsrv_service = talloc_get_type_abort( c->private_data, struct ldapsrv_service); struct auth_session_info *session_info; NTSTATUS status; status = auth_system_session_info( c, ldapsrv_service->task->lp_ctx, &session_info); if (!NT_STATUS_IS_OK(status)) { stream_terminate_connection(c, "failed to setup system " "session info"); return; } ldapsrv_accept(c, session_info); }
/* Create a security token for a session SYSTEM (the most * trusted/prvilaged account), including the local machine account as * the off-host credentials */ _PUBLIC_ struct auth_session_info *system_session(struct loadparm_context *lp_ctx) { static struct auth_session_info *static_session; NTSTATUS nt_status; if (static_session) { return static_session; } nt_status = auth_system_session_info(talloc_autofree_context(), lp_ctx, &static_session); if (!NT_STATUS_IS_OK(nt_status)) { talloc_free(static_session); static_session = NULL; return NULL; } talloc_set_destructor(static_session, system_session_destructor); return static_session; }