mirror of
https://github.com/samba-team/samba.git
synced 2025-03-11 16:58:40 +03:00
Specify event_context to ldb_wrap_connect explicitly.
This commit is contained in:
parent
2d1ca8cb7a
commit
b4e1ae07a2
@ -289,7 +289,7 @@ static NTSTATUS authsam_check_password_internals(struct auth_method_context *ctx
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
sam_ctx = samdb_connect(tmp_ctx, ctx->auth_ctx->lp_ctx, system_session(mem_ctx, ctx->auth_ctx->lp_ctx));
|
||||
sam_ctx = samdb_connect(tmp_ctx, ctx->auth_ctx->event_ctx, ctx->auth_ctx->lp_ctx, system_session(mem_ctx, ctx->auth_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
talloc_free(tmp_ctx);
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
|
@ -90,7 +90,7 @@ _PUBLIC_ NTSTATUS authenticate_username_pw(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
if (session_info) {
|
||||
nt_status = auth_generate_session_info(tmp_ctx, lp_ctx, server_info, session_info);
|
||||
nt_status = auth_generate_session_info(tmp_ctx, ev, lp_ctx, server_info, session_info);
|
||||
|
||||
if (NT_STATUS_IS_OK(nt_status)) {
|
||||
talloc_steal(mem_ctx, *session_info);
|
||||
|
@ -1327,7 +1327,7 @@ static NTSTATUS gensec_gssapi_session_info(struct gensec_security *gensec_securi
|
||||
} else if (!lp_parm_bool(gensec_security->lp_ctx, NULL, "gensec", "require_pac", false)) {
|
||||
DEBUG(1, ("Unable to find PAC, resorting to local user lookup: %s\n",
|
||||
gssapi_error_string(mem_ctx, maj_stat, min_stat, gensec_gssapi_state->gss_oid)));
|
||||
nt_status = sam_get_server_info_principal(mem_ctx, gensec_security->lp_ctx, principal_string,
|
||||
nt_status = sam_get_server_info_principal(mem_ctx, gensec_security->event_ctx, gensec_security->lp_ctx, principal_string,
|
||||
&server_info);
|
||||
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
@ -1342,7 +1342,7 @@ static NTSTATUS gensec_gssapi_session_info(struct gensec_security *gensec_securi
|
||||
}
|
||||
|
||||
/* references the server_info into the session_info */
|
||||
nt_status = auth_generate_session_info(mem_ctx, gensec_security->lp_ctx, server_info, &session_info);
|
||||
nt_status = auth_generate_session_info(mem_ctx, gensec_security->event_ctx, gensec_security->lp_ctx, server_info, &session_info);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
talloc_free(mem_ctx);
|
||||
return nt_status;
|
||||
|
@ -603,7 +603,7 @@ static NTSTATUS gensec_krb5_session_info(struct gensec_security *gensec_security
|
||||
DEBUG(5, ("krb5_ticket_get_authorization_data_type failed to find PAC: %s\n",
|
||||
smb_get_krb5_error_message(context,
|
||||
ret, mem_ctx)));
|
||||
nt_status = sam_get_server_info_principal(mem_ctx, gensec_security->lp_ctx, principal_string,
|
||||
nt_status = sam_get_server_info_principal(mem_ctx, gensec_security->event_ctx, gensec_security->lp_ctx, principal_string,
|
||||
&server_info);
|
||||
krb5_free_principal(context, client_principal);
|
||||
free(principal_string);
|
||||
@ -651,7 +651,7 @@ static NTSTATUS gensec_krb5_session_info(struct gensec_security *gensec_security
|
||||
}
|
||||
|
||||
/* references the server_info into the session_info */
|
||||
nt_status = auth_generate_session_info(mem_ctx, gensec_security->lp_ctx, server_info, &session_info);
|
||||
nt_status = auth_generate_session_info(mem_ctx, gensec_security->event_ctx, gensec_security->lp_ctx, server_info, &session_info);
|
||||
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
talloc_free(mem_ctx);
|
||||
|
@ -125,7 +125,8 @@ static NTSTATUS schannel_update(struct gensec_security *gensec_security, TALLOC_
|
||||
}
|
||||
|
||||
/* pull the session key for this client */
|
||||
status = schannel_fetch_session_key(out_mem_ctx, gensec_security->lp_ctx, workstation,
|
||||
status = schannel_fetch_session_key(out_mem_ctx, gensec_security->event_ctx,
|
||||
gensec_security->lp_ctx, workstation,
|
||||
domain, &creds);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(3, ("Could not find session key for attempted schannel connection from %s: %s\n",
|
||||
@ -189,7 +190,7 @@ static NTSTATUS schannel_session_info(struct gensec_security *gensec_security,
|
||||
struct auth_session_info **_session_info)
|
||||
{
|
||||
struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
|
||||
return auth_anonymous_session_info(state, gensec_security->lp_ctx, _session_info);
|
||||
return auth_anonymous_session_info(state, gensec_security->event_ctx, gensec_security->lp_ctx, _session_info);
|
||||
}
|
||||
|
||||
static NTSTATUS schannel_start(struct gensec_security *gensec_security)
|
||||
|
@ -32,7 +32,8 @@
|
||||
/**
|
||||
connect to the schannel ldb
|
||||
*/
|
||||
struct ldb_context *schannel_db_connect(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
|
||||
struct ldb_context *schannel_db_connect(TALLOC_CTX *mem_ctx, struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx)
|
||||
{
|
||||
char *path;
|
||||
struct ldb_context *ldb;
|
||||
@ -49,7 +50,7 @@ struct ldb_context *schannel_db_connect(TALLOC_CTX *mem_ctx, struct loadparm_con
|
||||
|
||||
existed = file_exist(path);
|
||||
|
||||
ldb = ldb_wrap_connect(mem_ctx, lp_ctx, path,
|
||||
ldb = ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx, path,
|
||||
system_session(mem_ctx, lp_ctx),
|
||||
NULL, LDB_FLG_NOSYNC, NULL);
|
||||
talloc_free(path);
|
||||
@ -137,6 +138,7 @@ NTSTATUS schannel_store_session_key_ldb(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
NTSTATUS schannel_store_session_key(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct creds_CredentialState *creds)
|
||||
{
|
||||
@ -144,7 +146,7 @@ NTSTATUS schannel_store_session_key(TALLOC_CTX *mem_ctx,
|
||||
NTSTATUS nt_status;
|
||||
int ret;
|
||||
|
||||
ldb = schannel_db_connect(mem_ctx, lp_ctx);
|
||||
ldb = schannel_db_connect(mem_ctx, ev_ctx, lp_ctx);
|
||||
if (!ldb) {
|
||||
return NT_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
@ -268,6 +270,7 @@ NTSTATUS schannel_fetch_session_key_ldb(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
NTSTATUS schannel_fetch_session_key(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *computer_name,
|
||||
const char *domain,
|
||||
@ -276,7 +279,7 @@ NTSTATUS schannel_fetch_session_key(TALLOC_CTX *mem_ctx,
|
||||
NTSTATUS nt_status;
|
||||
struct ldb_context *ldb;
|
||||
|
||||
ldb = schannel_db_connect(mem_ctx, lp_ctx);
|
||||
ldb = schannel_db_connect(mem_ctx, ev_ctx, lp_ctx);
|
||||
if (!ldb) {
|
||||
return NT_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
@ -725,7 +725,7 @@ NTSTATUS gensec_ntlmssp_session_info(struct gensec_security *gensec_security,
|
||||
NTSTATUS nt_status;
|
||||
struct gensec_ntlmssp_state *gensec_ntlmssp_state = (struct gensec_ntlmssp_state *)gensec_security->private_data;
|
||||
|
||||
nt_status = auth_generate_session_info(gensec_ntlmssp_state, gensec_security->lp_ctx, gensec_ntlmssp_state->server_info, session_info);
|
||||
nt_status = auth_generate_session_info(gensec_ntlmssp_state, gensec_security->event_ctx, gensec_security->lp_ctx, gensec_ntlmssp_state->server_info, session_info);
|
||||
NT_STATUS_NOT_OK_RETURN(nt_status);
|
||||
|
||||
(*session_info)->session_key = data_blob_talloc(*session_info,
|
||||
|
@ -428,6 +428,7 @@ NTSTATUS sam_get_results_principal(struct ldb_context *sam_ctx,
|
||||
|
||||
/* Used in the gensec_gssapi and gensec_krb5 server-side code, where the PAC isn't available */
|
||||
NTSTATUS sam_get_server_info_principal(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *principal,
|
||||
struct auth_serversupplied_info **server_info)
|
||||
@ -445,7 +446,7 @@ NTSTATUS sam_get_server_info_principal(TALLOC_CTX *mem_ctx,
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
sam_ctx = samdb_connect(tmp_ctx, lp_ctx, system_session(tmp_ctx, lp_ctx));
|
||||
sam_ctx = samdb_connect(tmp_ctx, event_ctx, lp_ctx, system_session(tmp_ctx, lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
talloc_free(tmp_ctx);
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
|
@ -31,11 +31,12 @@
|
||||
#include "auth/session_proto.h"
|
||||
|
||||
_PUBLIC_ struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx)
|
||||
{
|
||||
NTSTATUS nt_status;
|
||||
struct auth_session_info *session_info = NULL;
|
||||
nt_status = auth_anonymous_session_info(mem_ctx, lp_ctx, &session_info);
|
||||
nt_status = auth_anonymous_session_info(mem_ctx, event_ctx, lp_ctx, &session_info);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
return NULL;
|
||||
}
|
||||
@ -43,6 +44,7 @@ _PUBLIC_ struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
_PUBLIC_ NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info **_session_info)
|
||||
{
|
||||
@ -60,7 +62,7 @@ _PUBLIC_ NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx,
|
||||
}
|
||||
|
||||
/* references the server_info into the session_info */
|
||||
nt_status = auth_generate_session_info(parent_ctx, lp_ctx, server_info, &session_info);
|
||||
nt_status = auth_generate_session_info(parent_ctx, event_ctx, lp_ctx, server_info, &session_info);
|
||||
talloc_free(mem_ctx);
|
||||
|
||||
NT_STATUS_NOT_OK_RETURN(nt_status);
|
||||
@ -151,6 +153,7 @@ _PUBLIC_ NTSTATUS auth_anonymous_server_info(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
_PUBLIC_ NTSTATUS auth_generate_session_info(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_serversupplied_info *server_info,
|
||||
struct auth_session_info **_session_info)
|
||||
@ -168,6 +171,7 @@ _PUBLIC_ NTSTATUS auth_generate_session_info(TALLOC_CTX *mem_ctx,
|
||||
session_info->session_key = server_info->user_session_key;
|
||||
|
||||
nt_status = security_token_create(session_info,
|
||||
event_ctx,
|
||||
lp_ctx,
|
||||
server_info->account_sid,
|
||||
server_info->primary_group_sid,
|
||||
|
@ -36,6 +36,7 @@ NTSTATUS auth_anonymous_server_info(TALLOC_CTX *mem_ctx,
|
||||
const char *netbios_name,
|
||||
struct auth_serversupplied_info **_server_info) ;
|
||||
NTSTATUS auth_generate_session_info(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_serversupplied_info *server_info,
|
||||
struct auth_session_info **_session_info) ;
|
||||
@ -46,10 +47,12 @@ NTSTATUS make_server_info_netlogon_validation(TALLOC_CTX *mem_ctx,
|
||||
union netr_Validation *validation,
|
||||
struct auth_serversupplied_info **_server_info);
|
||||
NTSTATUS auth_anonymous_session_info(TALLOC_CTX *parent_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info **_session_info);
|
||||
|
||||
struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx);
|
||||
|
||||
|
||||
|
@ -187,7 +187,7 @@ static void cldapd_task_init(struct task_server *task)
|
||||
}
|
||||
|
||||
cldapd->task = task;
|
||||
cldapd->samctx = samdb_connect(cldapd, task->lp_ctx, anonymous_session(cldapd, task->lp_ctx));
|
||||
cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, anonymous_session(cldapd, task->event_ctx, task->lp_ctx));
|
||||
if (cldapd->samctx == NULL) {
|
||||
task_server_terminate(task, "cldapd failed to open samdb");
|
||||
return;
|
||||
|
@ -49,14 +49,15 @@ struct sidmap_context {
|
||||
/*
|
||||
open a sidmap context - use talloc_free to close
|
||||
*/
|
||||
struct sidmap_context *sidmap_open(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
|
||||
struct sidmap_context *sidmap_open(TALLOC_CTX *mem_ctx, struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx)
|
||||
{
|
||||
struct sidmap_context *sidmap;
|
||||
sidmap = talloc(mem_ctx, struct sidmap_context);
|
||||
if (sidmap == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
sidmap->samctx = samdb_connect(sidmap, lp_ctx, system_session(sidmap, lp_ctx));
|
||||
sidmap->samctx = samdb_connect(sidmap, ev_ctx, lp_ctx, system_session(sidmap, lp_ctx));
|
||||
if (sidmap->samctx == NULL) {
|
||||
talloc_free(sidmap);
|
||||
return NULL;
|
||||
|
@ -51,7 +51,7 @@ static WERROR dreplsrv_connect_samdb(struct dreplsrv_service *service, struct lo
|
||||
const struct GUID *ntds_guid;
|
||||
struct drsuapi_DsBindInfo28 *bind_info28;
|
||||
|
||||
service->samdb = samdb_connect(service, lp_ctx, service->system_session_info);
|
||||
service->samdb = samdb_connect(service, service->task->event_ctx, lp_ctx, service->system_session_info);
|
||||
if (!service->samdb) {
|
||||
return WERR_DS_SERVICE_UNAVAILABLE;
|
||||
}
|
||||
|
@ -1197,6 +1197,7 @@ NTSTATUS crack_service_principal_name(struct ldb_context *sam_ctx,
|
||||
}
|
||||
|
||||
NTSTATUS crack_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
uint32_t format_offered,
|
||||
const char *name,
|
||||
@ -1214,7 +1215,7 @@ NTSTATUS crack_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
ldb = samdb_connect(mem_ctx, lp_ctx, system_session(mem_ctx, lp_ctx));
|
||||
ldb = samdb_connect(mem_ctx, ev_ctx, lp_ctx, system_session(mem_ctx, lp_ctx));
|
||||
if (ldb == NULL) {
|
||||
return NT_STATUS_INTERNAL_DB_CORRUPTION;
|
||||
}
|
||||
@ -1259,6 +1260,7 @@ NTSTATUS crack_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
NTSTATUS crack_auto_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *name,
|
||||
const char **nt4_domain,
|
||||
@ -1283,5 +1285,5 @@ NTSTATUS crack_auto_name_to_nt4_name(TALLOC_CTX *mem_ctx,
|
||||
format_offered = DRSUAPI_DS_NAME_FORMAT_CANONICAL;
|
||||
}
|
||||
|
||||
return crack_name_to_nt4_name(mem_ctx, lp_ctx, format_offered, name, nt4_domain, nt4_account);
|
||||
return crack_name_to_nt4_name(mem_ctx, ev_ctx, lp_ctx, format_offered, name, nt4_domain, nt4_account);
|
||||
}
|
||||
|
@ -484,8 +484,7 @@ static int samldb_fill_group_object(struct ldb_module *module, const struct ldb_
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int samldb_fill_user_or_computer_object(struct ldb_module *module, const struct ldb_message *msg,
|
||||
struct ldb_message **ret_msg)
|
||||
static int samldb_fill_user_or_computer_object(struct ldb_module *module, const struct ldb_message *msg, struct ldb_message **ret_msg)
|
||||
{
|
||||
int ret;
|
||||
char *name;
|
||||
|
@ -90,7 +90,7 @@ static int add_modified(struct ldb_module *module, struct ldb_dn *dn, bool delet
|
||||
}
|
||||
|
||||
cli_credentials_set_conf(item->creds, ldb_get_opaque(module->ldb, "loadparm"));
|
||||
status = cli_credentials_set_secrets(item->creds, ldb_get_opaque(module->ldb, "event_ctx"), ldb_get_opaque(module->ldb, "loadparm"), module->ldb, NULL, filter);
|
||||
status = cli_credentials_set_secrets(item->creds, ldb_get_opaque(module->ldb, "EventContext"), ldb_get_opaque(module->ldb, "loadparm"), module->ldb, NULL, filter);
|
||||
talloc_free(filter);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
if (delete) {
|
||||
@ -158,7 +158,7 @@ static int update_kt_end_trans(struct ldb_module *module)
|
||||
struct dn_list *p;
|
||||
for (p=data->changed_dns; p; p = p->next) {
|
||||
int kret;
|
||||
kret = cli_credentials_update_keytab(p->creds, ldb_get_opaque(module->ldb, "event_ctx"), ldb_get_opaque(module->ldb, "loadparm"));
|
||||
kret = cli_credentials_update_keytab(p->creds, ldb_get_opaque(module->ldb, "EventContext"), ldb_get_opaque(module->ldb, "loadparm"));
|
||||
if (kret != 0) {
|
||||
talloc_free(data->changed_dns);
|
||||
data->changed_dns = NULL;
|
||||
|
@ -71,11 +71,12 @@ char *samdb_relative_path(struct ldb_context *ldb,
|
||||
return an opaque context pointer on success, or NULL on failure
|
||||
*/
|
||||
struct ldb_context *samdb_connect(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info *session_info)
|
||||
{
|
||||
struct ldb_context *ldb;
|
||||
ldb = ldb_wrap_connect(mem_ctx, lp_ctx,
|
||||
ldb = ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx,
|
||||
lp_sam_url(lp_ctx), session_info,
|
||||
NULL, 0, NULL);
|
||||
if (!ldb) {
|
||||
@ -98,6 +99,8 @@ int samdb_copy_template(struct ldb_context *ldb,
|
||||
struct ldb_context *templates_ldb;
|
||||
char *templates_ldb_path;
|
||||
struct ldb_dn *basedn;
|
||||
struct event_context *event_ctx;
|
||||
struct loadparm_context *lp_ctx;
|
||||
|
||||
templates_ldb = talloc_get_type(ldb_get_opaque(ldb, "templates_ldb"), struct ldb_context);
|
||||
|
||||
@ -109,8 +112,11 @@ int samdb_copy_template(struct ldb_context *ldb,
|
||||
*errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: Failed to contruct path for template db");
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
event_ctx = (struct event_context *)ldb_get_opaque(ldb, "EventContext");
|
||||
lp_ctx = (struct loadparm_context *)ldb_get_opaque(ldb, "loadparm");
|
||||
|
||||
templates_ldb = ldb_wrap_connect(ldb, (struct loadparm_context *)ldb_get_opaque(ldb, "loadparm"),
|
||||
templates_ldb = ldb_wrap_connect(ldb, event_ctx, lp_ctx,
|
||||
templates_ldb_path, NULL,
|
||||
NULL, 0, NULL);
|
||||
talloc_free(templates_ldb_path);
|
||||
@ -184,6 +190,7 @@ int samdb_copy_template(struct ldb_context *ldb,
|
||||
Create the SID list for this user.
|
||||
****************************************************************************/
|
||||
NTSTATUS security_token_create(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct dom_sid *user_sid,
|
||||
struct dom_sid *group_sid,
|
||||
@ -242,7 +249,7 @@ NTSTATUS security_token_create(TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
/* setup the privilege mask for this token */
|
||||
status = samdb_privilege_setup(lp_ctx, ptoken);
|
||||
status = samdb_privilege_setup(ev_ctx, lp_ctx, ptoken);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
talloc_free(ptoken);
|
||||
return status;
|
||||
|
@ -27,6 +27,7 @@ struct dsdb_control_current_partition;
|
||||
struct dsdb_extended_replicated_object;
|
||||
struct dsdb_extended_replicated_objects;
|
||||
struct loadparm_context;
|
||||
struct event_context;
|
||||
|
||||
#include "librpc/gen_ndr/security.h"
|
||||
#include "lib/ldb/include/ldb.h"
|
||||
|
@ -73,7 +73,8 @@ static NTSTATUS samdb_privilege_setup_sid(void *samctx, TALLOC_CTX *mem_ctx,
|
||||
setup the privilege mask for this security token based on our
|
||||
local SAM
|
||||
*/
|
||||
NTSTATUS samdb_privilege_setup(struct loadparm_context *lp_ctx, struct security_token *token)
|
||||
NTSTATUS samdb_privilege_setup(struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx, struct security_token *token)
|
||||
{
|
||||
void *samctx;
|
||||
TALLOC_CTX *mem_ctx;
|
||||
@ -97,7 +98,7 @@ NTSTATUS samdb_privilege_setup(struct loadparm_context *lp_ctx, struct security_
|
||||
}
|
||||
|
||||
mem_ctx = talloc_new(token);
|
||||
samctx = samdb_connect(mem_ctx, lp_ctx, system_session(mem_ctx, lp_ctx));
|
||||
samctx = samdb_connect(mem_ctx, ev_ctx, lp_ctx, system_session(mem_ctx, lp_ctx));
|
||||
if (samctx == NULL) {
|
||||
talloc_free(mem_ctx);
|
||||
return NT_STATUS_INTERNAL_DB_CORRUPTION;
|
||||
|
@ -50,6 +50,7 @@
|
||||
#include "librpc/gen_ndr/ndr_drsblobs.h"
|
||||
#include "libcli/auth/libcli_auth.h"
|
||||
#include "param/param.h"
|
||||
#include "events/events.h"
|
||||
|
||||
enum hdb_ldb_ent_type
|
||||
{ HDB_LDB_ENT_TYPE_CLIENT, HDB_LDB_ENT_TYPE_SERVER,
|
||||
@ -1106,6 +1107,7 @@ static krb5_error_code LDB_destroy(krb5_context context, HDB *db)
|
||||
* code */
|
||||
|
||||
NTSTATUS kdc_hdb_ldb_create(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
krb5_context context, struct HDB **db, const char *arg)
|
||||
{
|
||||
@ -1137,7 +1139,7 @@ NTSTATUS kdc_hdb_ldb_create(TALLOC_CTX *mem_ctx,
|
||||
CRED_DONT_USE_KERBEROS);
|
||||
|
||||
/* Setup the link to LDB */
|
||||
(*db)->hdb_db = samdb_connect(*db, lp_ctx, session_info);
|
||||
(*db)->hdb_db = samdb_connect(*db, ev_ctx, lp_ctx, session_info);
|
||||
if ((*db)->hdb_db == NULL) {
|
||||
DEBUG(1, ("hdb_ldb_create: Cannot open samdb for KDC backend!"));
|
||||
return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
|
||||
@ -1168,7 +1170,7 @@ krb5_error_code hdb_ldb_create(krb5_context context, struct HDB **db, const char
|
||||
{
|
||||
NTSTATUS nt_status;
|
||||
/* The global kdc_mem_ctx and kdc_lp_ctx, Disgusting, ugly hack, but it means one less private hook */
|
||||
nt_status = kdc_hdb_ldb_create(kdc_mem_ctx, kdc_lp_ctx,
|
||||
nt_status = kdc_hdb_ldb_create(kdc_mem_ctx, event_context_find(kdc_mem_ctx), kdc_lp_ctx,
|
||||
context, db, arg);
|
||||
|
||||
if (NT_STATUS_IS_OK(nt_status)) {
|
||||
|
@ -624,7 +624,7 @@ static void kdc_task_init(struct task_server *task)
|
||||
}
|
||||
kdc->config->num_db = 1;
|
||||
|
||||
status = kdc_hdb_ldb_create(kdc, task->lp_ctx,
|
||||
status = kdc_hdb_ldb_create(kdc, task->event_ctx, task->lp_ctx,
|
||||
kdc->smb_krb5_context->krb5_context,
|
||||
&kdc->config->db[0], NULL);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
|
@ -180,7 +180,7 @@ static bool kpasswdd_change_password(struct kdc_server *kdc,
|
||||
struct samr_DomInfo1 *dominfo;
|
||||
struct ldb_context *samdb;
|
||||
|
||||
samdb = samdb_connect(mem_ctx, kdc->task->lp_ctx, system_session(mem_ctx, kdc->task->lp_ctx));
|
||||
samdb = samdb_connect(mem_ctx, kdc->task->event_ctx, kdc->task->lp_ctx, system_session(mem_ctx, kdc->task->lp_ctx));
|
||||
if (!samdb) {
|
||||
return kpasswdd_make_error_reply(kdc, mem_ctx,
|
||||
KRB5_KPASSWD_HARDERROR,
|
||||
@ -310,7 +310,7 @@ static bool kpasswd_process_request(struct kdc_server *kdc,
|
||||
|
||||
krb5_free_principal(context, principal);
|
||||
|
||||
samdb = samdb_connect(mem_ctx, kdc->task->lp_ctx, session_info);
|
||||
samdb = samdb_connect(mem_ctx, kdc->task->event_ctx, kdc->task->lp_ctx, session_info);
|
||||
if (!samdb) {
|
||||
return kpasswdd_make_error_reply(kdc, mem_ctx,
|
||||
KRB5_KPASSWD_HARDERROR,
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "auth/credentials/credentials.h"
|
||||
#include "auth/gensec/gensec.h"
|
||||
#include "param/param.h"
|
||||
#include "smbd/service_stream.h"
|
||||
|
||||
#define VALID_DN_SYNTAX(dn,i) do {\
|
||||
if (!(dn)) {\
|
||||
@ -56,6 +57,7 @@ static int map_ldb_error(struct ldb_context *ldb, int err, const char **errstrin
|
||||
NTSTATUS ldapsrv_backend_Init(struct ldapsrv_connection *conn)
|
||||
{
|
||||
conn->ldb = ldb_wrap_connect(conn,
|
||||
conn->connection->event.ctx,
|
||||
conn->lp_ctx,
|
||||
lp_sam_url(conn->lp_ctx),
|
||||
conn->session_info,
|
||||
|
@ -44,7 +44,7 @@ static NTSTATUS ldapsrv_BindSimple(struct ldapsrv_call *call)
|
||||
|
||||
DEBUG(10, ("BindSimple dn: %s\n",req->dn));
|
||||
|
||||
status = crack_auto_name_to_nt4_name(call, call->conn->lp_ctx, req->dn, &nt4_domain, &nt4_account);
|
||||
status = crack_auto_name_to_nt4_name(call, call->conn->connection->event.ctx, call->conn->lp_ctx, req->dn, &nt4_domain, &nt4_account);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
status = authenticate_username_pw(call,
|
||||
call->conn->connection->event.ctx,
|
||||
|
@ -409,7 +409,7 @@ static void ldapsrv_accept(struct stream_connection *c)
|
||||
conn->server_credentials = server_credentials;
|
||||
|
||||
/* Connections start out anonymous */
|
||||
if (!NT_STATUS_IS_OK(auth_anonymous_session_info(conn, conn->lp_ctx, &conn->session_info))) {
|
||||
if (!NT_STATUS_IS_OK(auth_anonymous_session_info(conn, c->event.ctx, conn->lp_ctx, &conn->session_info))) {
|
||||
ldapsrv_terminate_connection(conn, "failed to setup anonymous session info");
|
||||
return;
|
||||
}
|
||||
@ -478,7 +478,8 @@ static NTSTATUS add_socket(struct event_context *event_context,
|
||||
}
|
||||
|
||||
/* Load LDAP database */
|
||||
ldb = samdb_connect(ldap_service, lp_ctx, system_session(ldap_service, lp_ctx));
|
||||
ldb = samdb_connect(ldap_service, ldap_service->task->event_ctx,
|
||||
lp_ctx, system_session(ldap_service, lp_ctx));
|
||||
if (!ldb) {
|
||||
return NT_STATUS_INTERNAL_DB_CORRUPTION;
|
||||
}
|
||||
|
@ -94,6 +94,7 @@ static int ldb_wrap_destructor(struct ldb_context *ldb)
|
||||
TODO: We need an error_string parameter
|
||||
*/
|
||||
struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *url,
|
||||
struct auth_session_info *session_info,
|
||||
@ -103,7 +104,6 @@ struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx,
|
||||
{
|
||||
struct ldb_context *ldb;
|
||||
int ret;
|
||||
struct event_context *ev;
|
||||
char *real_url = NULL;
|
||||
size_t *startup_blocks;
|
||||
|
||||
@ -115,10 +115,9 @@ struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx,
|
||||
ldb_set_modules_dir(ldb,
|
||||
talloc_asprintf(ldb, "%s/ldb", lp_modulesdir(lp_ctx)));
|
||||
|
||||
/* we want to use the existing event context if possible. This
|
||||
relies on the fact that in smbd, everything is a child of
|
||||
the main event_context */
|
||||
ev = event_context_find(ldb);
|
||||
if (ev == NULL) {
|
||||
ev = event_context_find(mem_ctx);
|
||||
}
|
||||
|
||||
if (ldb_set_opaque(ldb, "EventContext", ev)) {
|
||||
talloc_free(ldb);
|
||||
|
@ -27,10 +27,12 @@ struct ldb_message;
|
||||
struct ldb_dn;
|
||||
struct cli_credentials;
|
||||
struct loadparm_context;
|
||||
struct event_context;
|
||||
|
||||
char *wrap_casefold(void *context, void *mem_ctx, const char *s);
|
||||
|
||||
struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *url,
|
||||
struct auth_session_info *session_info,
|
||||
|
@ -28,6 +28,7 @@
|
||||
_PUBLIC_ WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct hive_key **root)
|
||||
{
|
||||
@ -57,7 +58,7 @@ _PUBLIC_ WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
|
||||
} else if (!strncmp(peek, "TDB file", 8)) {
|
||||
close(fd);
|
||||
return reg_open_ldb_file(parent_ctx, location, session_info,
|
||||
credentials, lp_ctx, root);
|
||||
credentials, ev_ctx, lp_ctx, root);
|
||||
}
|
||||
|
||||
return WERR_BADFILE;
|
||||
|
@ -357,6 +357,7 @@ static WERROR ldb_open_key(TALLOC_CTX *mem_ctx, const struct hive_key *h,
|
||||
WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct hive_key **k)
|
||||
{
|
||||
@ -367,7 +368,7 @@ WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location,
|
||||
if (location == NULL)
|
||||
return WERR_INVALID_PARAM;
|
||||
|
||||
wrap = ldb_wrap_connect(parent_ctx, lp_ctx,
|
||||
wrap = ldb_wrap_connect(parent_ctx, ev_ctx, lp_ctx,
|
||||
location, session_info, credentials, 0, NULL);
|
||||
|
||||
if (wrap == NULL) {
|
||||
|
@ -149,10 +149,12 @@ struct hive_operations {
|
||||
|
||||
struct cli_credentials;
|
||||
struct auth_session_info;
|
||||
struct event_context;
|
||||
|
||||
WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct hive_key **root);
|
||||
WERROR hive_key_get_info(TALLOC_CTX *mem_ctx, const struct hive_key *key,
|
||||
@ -199,6 +201,7 @@ WERROR reg_open_regf_file(TALLOC_CTX *parent_ctx,
|
||||
WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct hive_key **k);
|
||||
|
||||
@ -359,6 +362,7 @@ WERROR reg_open_local(TALLOC_CTX *mem_ctx,
|
||||
|
||||
WERROR reg_open_samba(TALLOC_CTX *mem_ctx,
|
||||
struct registry_context **ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials);
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "includes.h"
|
||||
#include "registry.h"
|
||||
#include "param/param.h"
|
||||
#include "events/events.h"
|
||||
|
||||
typedef struct registry_context reg;
|
||||
typedef struct hive_key hive_key;
|
||||
@ -41,6 +42,7 @@ typedef struct hive_key hive_key;
|
||||
%import "../../auth/credentials/credentials.i"
|
||||
%import "../../libcli/util/errors.i"
|
||||
%import "../../param/param.i"
|
||||
%import "../events/events.i"
|
||||
|
||||
/* Utility functions */
|
||||
|
||||
@ -132,6 +134,7 @@ typedef struct registry_context {
|
||||
WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct hive_key **root);
|
||||
|
||||
@ -139,6 +142,7 @@ WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location,
|
||||
WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct hive_key **k);
|
||||
|
||||
@ -165,6 +169,7 @@ typedef struct hive_key {
|
||||
|
||||
WERROR reg_open_samba(TALLOC_CTX *mem_ctx,
|
||||
struct registry_context **ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials);
|
||||
|
@ -59,6 +59,7 @@ def _swig_setattr_nondynamic_method(set):
|
||||
|
||||
import credentials
|
||||
import param
|
||||
import events
|
||||
reg_get_predef_name = _registry.reg_get_predef_name
|
||||
str_regtype = _registry.str_regtype
|
||||
Registry = _registry.Registry
|
||||
|
@ -2478,29 +2478,30 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
|
||||
#define SWIGTYPE_p_auth_session_info swig_types[1]
|
||||
#define SWIGTYPE_p_char swig_types[2]
|
||||
#define SWIGTYPE_p_cli_credentials swig_types[3]
|
||||
#define SWIGTYPE_p_hive_key swig_types[4]
|
||||
#define SWIGTYPE_p_int swig_types[5]
|
||||
#define SWIGTYPE_p_loadparm_context swig_types[6]
|
||||
#define SWIGTYPE_p_loadparm_service swig_types[7]
|
||||
#define SWIGTYPE_p_long_long swig_types[8]
|
||||
#define SWIGTYPE_p_p_char swig_types[9]
|
||||
#define SWIGTYPE_p_p_hive_key swig_types[10]
|
||||
#define SWIGTYPE_p_p_registry_context swig_types[11]
|
||||
#define SWIGTYPE_p_p_registry_key swig_types[12]
|
||||
#define SWIGTYPE_p_param_context swig_types[13]
|
||||
#define SWIGTYPE_p_param_opt swig_types[14]
|
||||
#define SWIGTYPE_p_param_section swig_types[15]
|
||||
#define SWIGTYPE_p_reg_diff_callbacks swig_types[16]
|
||||
#define SWIGTYPE_p_registry_context swig_types[17]
|
||||
#define SWIGTYPE_p_registry_key swig_types[18]
|
||||
#define SWIGTYPE_p_short swig_types[19]
|
||||
#define SWIGTYPE_p_signed_char swig_types[20]
|
||||
#define SWIGTYPE_p_unsigned_char swig_types[21]
|
||||
#define SWIGTYPE_p_unsigned_int swig_types[22]
|
||||
#define SWIGTYPE_p_unsigned_long_long swig_types[23]
|
||||
#define SWIGTYPE_p_unsigned_short swig_types[24]
|
||||
static swig_type_info *swig_types[26];
|
||||
static swig_module_info swig_module = {swig_types, 25, 0, 0, 0, 0};
|
||||
#define SWIGTYPE_p_event_context swig_types[4]
|
||||
#define SWIGTYPE_p_hive_key swig_types[5]
|
||||
#define SWIGTYPE_p_int swig_types[6]
|
||||
#define SWIGTYPE_p_loadparm_context swig_types[7]
|
||||
#define SWIGTYPE_p_loadparm_service swig_types[8]
|
||||
#define SWIGTYPE_p_long_long swig_types[9]
|
||||
#define SWIGTYPE_p_p_char swig_types[10]
|
||||
#define SWIGTYPE_p_p_hive_key swig_types[11]
|
||||
#define SWIGTYPE_p_p_registry_context swig_types[12]
|
||||
#define SWIGTYPE_p_p_registry_key swig_types[13]
|
||||
#define SWIGTYPE_p_param_context swig_types[14]
|
||||
#define SWIGTYPE_p_param_opt swig_types[15]
|
||||
#define SWIGTYPE_p_param_section swig_types[16]
|
||||
#define SWIGTYPE_p_reg_diff_callbacks swig_types[17]
|
||||
#define SWIGTYPE_p_registry_context swig_types[18]
|
||||
#define SWIGTYPE_p_registry_key swig_types[19]
|
||||
#define SWIGTYPE_p_short swig_types[20]
|
||||
#define SWIGTYPE_p_signed_char swig_types[21]
|
||||
#define SWIGTYPE_p_unsigned_char swig_types[22]
|
||||
#define SWIGTYPE_p_unsigned_int swig_types[23]
|
||||
#define SWIGTYPE_p_unsigned_long_long swig_types[24]
|
||||
#define SWIGTYPE_p_unsigned_short swig_types[25]
|
||||
static swig_type_info *swig_types[27];
|
||||
static swig_module_info swig_module = {swig_types, 26, 0, 0, 0, 0};
|
||||
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
|
||||
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
|
||||
|
||||
@ -2547,6 +2548,7 @@ static swig_module_info swig_module = {swig_types, 25, 0, 0, 0, 0};
|
||||
#include "includes.h"
|
||||
#include "registry.h"
|
||||
#include "param/param.h"
|
||||
#include "events/events.h"
|
||||
|
||||
typedef struct registry_context reg;
|
||||
typedef struct hive_key hive_key;
|
||||
@ -3462,8 +3464,9 @@ SWIGINTERN PyObject *_wrap_hive_key(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
char *arg2 = (char *) 0 ;
|
||||
struct auth_session_info *arg3 = (struct auth_session_info *) 0 ;
|
||||
struct cli_credentials *arg4 = (struct cli_credentials *) 0 ;
|
||||
struct loadparm_context *arg5 = (struct loadparm_context *) 0 ;
|
||||
struct hive_key **arg6 = (struct hive_key **) 0 ;
|
||||
struct event_context *arg5 = (struct event_context *) 0 ;
|
||||
struct loadparm_context *arg6 = (struct loadparm_context *) 0 ;
|
||||
struct hive_key **arg7 = (struct hive_key **) 0 ;
|
||||
WERROR result;
|
||||
int res2 ;
|
||||
char *buf2 = 0 ;
|
||||
@ -3474,21 +3477,25 @@ SWIGINTERN PyObject *_wrap_hive_key(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
int res4 = 0 ;
|
||||
void *argp5 = 0 ;
|
||||
int res5 = 0 ;
|
||||
struct hive_key *tmp6 ;
|
||||
void *argp6 = 0 ;
|
||||
int res6 = 0 ;
|
||||
struct hive_key *tmp7 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
PyObject * obj1 = 0 ;
|
||||
PyObject * obj2 = 0 ;
|
||||
PyObject * obj3 = 0 ;
|
||||
PyObject * obj4 = 0 ;
|
||||
char * kwnames[] = {
|
||||
(char *) "location",(char *) "session_info",(char *) "credentials",(char *) "lp_ctx", NULL
|
||||
(char *) "location",(char *) "session_info",(char *) "credentials",(char *) "ev_ctx",(char *) "lp_ctx", NULL
|
||||
};
|
||||
|
||||
arg3 = NULL;
|
||||
arg4 = NULL;
|
||||
arg5 = loadparm_init(NULL);
|
||||
arg5 = event_context_init(NULL);
|
||||
arg6 = loadparm_init(NULL);
|
||||
arg1 = NULL;
|
||||
arg6 = &tmp6;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOO:hive_key",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
|
||||
arg7 = &tmp7;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOOO:hive_key",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
|
||||
res2 = SWIG_AsCharPtrAndSize(obj0, &buf2, NULL, &alloc2);
|
||||
if (!SWIG_IsOK(res2)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "hive_key" "', argument " "2"" of type '" "char const *""'");
|
||||
@ -3509,13 +3516,20 @@ SWIGINTERN PyObject *_wrap_hive_key(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
arg4 = (struct cli_credentials *)(argp4);
|
||||
}
|
||||
if (obj3) {
|
||||
res5 = SWIG_ConvertPtr(obj3, &argp5,SWIGTYPE_p_loadparm_context, 0 | 0 );
|
||||
res5 = SWIG_ConvertPtr(obj3, &argp5,SWIGTYPE_p_event_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res5)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "hive_key" "', argument " "5"" of type '" "struct loadparm_context *""'");
|
||||
SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "hive_key" "', argument " "5"" of type '" "struct event_context *""'");
|
||||
}
|
||||
arg5 = (struct loadparm_context *)(argp5);
|
||||
arg5 = (struct event_context *)(argp5);
|
||||
}
|
||||
result = reg_open_hive(arg1,(char const *)arg2,arg3,arg4,arg5,arg6);
|
||||
if (obj4) {
|
||||
res6 = SWIG_ConvertPtr(obj4, &argp6,SWIGTYPE_p_loadparm_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res6)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "hive_key" "', argument " "6"" of type '" "struct loadparm_context *""'");
|
||||
}
|
||||
arg6 = (struct loadparm_context *)(argp6);
|
||||
}
|
||||
result = reg_open_hive(arg1,(char const *)arg2,arg3,arg4,arg5,arg6,arg7);
|
||||
if (!W_ERROR_IS_OK(result)) {
|
||||
PyObject *obj = Py_BuildValue((char *)"(i,s)", W_ERROR_V(result), win_errstr(result));
|
||||
PyErr_SetObject(PyExc_RuntimeError, obj);
|
||||
@ -3524,7 +3538,7 @@ SWIGINTERN PyObject *_wrap_hive_key(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
resultobj = Py_None;
|
||||
}
|
||||
Py_XDECREF(resultobj);
|
||||
resultobj = SWIG_NewPointerObj(*arg6, SWIGTYPE_p_hive_key, 0);
|
||||
resultobj = SWIG_NewPointerObj(*arg7, SWIGTYPE_p_hive_key, 0);
|
||||
if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
|
||||
return resultobj;
|
||||
fail:
|
||||
@ -3539,8 +3553,9 @@ SWIGINTERN PyObject *_wrap_open_ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
char *arg2 = (char *) 0 ;
|
||||
struct auth_session_info *arg3 = (struct auth_session_info *) 0 ;
|
||||
struct cli_credentials *arg4 = (struct cli_credentials *) 0 ;
|
||||
struct loadparm_context *arg5 = (struct loadparm_context *) 0 ;
|
||||
struct hive_key **arg6 = (struct hive_key **) 0 ;
|
||||
struct event_context *arg5 = (struct event_context *) 0 ;
|
||||
struct loadparm_context *arg6 = (struct loadparm_context *) 0 ;
|
||||
struct hive_key **arg7 = (struct hive_key **) 0 ;
|
||||
WERROR result;
|
||||
int res2 ;
|
||||
char *buf2 = 0 ;
|
||||
@ -3551,21 +3566,25 @@ SWIGINTERN PyObject *_wrap_open_ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
int res4 = 0 ;
|
||||
void *argp5 = 0 ;
|
||||
int res5 = 0 ;
|
||||
struct hive_key *tmp6 ;
|
||||
void *argp6 = 0 ;
|
||||
int res6 = 0 ;
|
||||
struct hive_key *tmp7 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
PyObject * obj1 = 0 ;
|
||||
PyObject * obj2 = 0 ;
|
||||
PyObject * obj3 = 0 ;
|
||||
PyObject * obj4 = 0 ;
|
||||
char * kwnames[] = {
|
||||
(char *) "location",(char *) "session_info",(char *) "credentials",(char *) "lp_ctx", NULL
|
||||
(char *) "location",(char *) "session_info",(char *) "credentials",(char *) "ev_ctx",(char *) "lp_ctx", NULL
|
||||
};
|
||||
|
||||
arg3 = NULL;
|
||||
arg4 = NULL;
|
||||
arg5 = loadparm_init(NULL);
|
||||
arg5 = event_context_init(NULL);
|
||||
arg6 = loadparm_init(NULL);
|
||||
arg1 = NULL;
|
||||
arg6 = &tmp6;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOO:open_ldb",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
|
||||
arg7 = &tmp7;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOOO:open_ldb",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
|
||||
res2 = SWIG_AsCharPtrAndSize(obj0, &buf2, NULL, &alloc2);
|
||||
if (!SWIG_IsOK(res2)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "open_ldb" "', argument " "2"" of type '" "char const *""'");
|
||||
@ -3586,13 +3605,20 @@ SWIGINTERN PyObject *_wrap_open_ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
arg4 = (struct cli_credentials *)(argp4);
|
||||
}
|
||||
if (obj3) {
|
||||
res5 = SWIG_ConvertPtr(obj3, &argp5,SWIGTYPE_p_loadparm_context, 0 | 0 );
|
||||
res5 = SWIG_ConvertPtr(obj3, &argp5,SWIGTYPE_p_event_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res5)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "open_ldb" "', argument " "5"" of type '" "struct loadparm_context *""'");
|
||||
SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "open_ldb" "', argument " "5"" of type '" "struct event_context *""'");
|
||||
}
|
||||
arg5 = (struct loadparm_context *)(argp5);
|
||||
arg5 = (struct event_context *)(argp5);
|
||||
}
|
||||
result = reg_open_ldb_file(arg1,(char const *)arg2,arg3,arg4,arg5,arg6);
|
||||
if (obj4) {
|
||||
res6 = SWIG_ConvertPtr(obj4, &argp6,SWIGTYPE_p_loadparm_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res6)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "open_ldb" "', argument " "6"" of type '" "struct loadparm_context *""'");
|
||||
}
|
||||
arg6 = (struct loadparm_context *)(argp6);
|
||||
}
|
||||
result = reg_open_ldb_file(arg1,(char const *)arg2,arg3,arg4,arg5,arg6,arg7);
|
||||
if (!W_ERROR_IS_OK(result)) {
|
||||
PyObject *obj = Py_BuildValue((char *)"(i,s)", W_ERROR_V(result), win_errstr(result));
|
||||
PyErr_SetObject(PyExc_RuntimeError, obj);
|
||||
@ -3601,7 +3627,7 @@ SWIGINTERN PyObject *_wrap_open_ldb(PyObject *SWIGUNUSEDPARM(self), PyObject *ar
|
||||
resultobj = Py_None;
|
||||
}
|
||||
Py_XDECREF(resultobj);
|
||||
resultobj = SWIG_NewPointerObj(*arg6, SWIGTYPE_p_hive_key, 0);
|
||||
resultobj = SWIG_NewPointerObj(*arg7, SWIGTYPE_p_hive_key, 0);
|
||||
if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
|
||||
return resultobj;
|
||||
fail:
|
||||
@ -3696,9 +3722,10 @@ SWIGINTERN PyObject *_wrap_open_samba(PyObject *SWIGUNUSEDPARM(self), PyObject *
|
||||
PyObject *resultobj = 0;
|
||||
TALLOC_CTX *arg1 = (TALLOC_CTX *) 0 ;
|
||||
struct registry_context **arg2 = (struct registry_context **) 0 ;
|
||||
struct loadparm_context *arg3 = (struct loadparm_context *) 0 ;
|
||||
struct auth_session_info *arg4 = (struct auth_session_info *) 0 ;
|
||||
struct cli_credentials *arg5 = (struct cli_credentials *) 0 ;
|
||||
struct event_context *arg3 = (struct event_context *) 0 ;
|
||||
struct loadparm_context *arg4 = (struct loadparm_context *) 0 ;
|
||||
struct auth_session_info *arg5 = (struct auth_session_info *) 0 ;
|
||||
struct cli_credentials *arg6 = (struct cli_credentials *) 0 ;
|
||||
WERROR result;
|
||||
struct registry_context *tmp2 ;
|
||||
void *argp3 = 0 ;
|
||||
@ -3707,41 +3734,52 @@ SWIGINTERN PyObject *_wrap_open_samba(PyObject *SWIGUNUSEDPARM(self), PyObject *
|
||||
int res4 = 0 ;
|
||||
void *argp5 = 0 ;
|
||||
int res5 = 0 ;
|
||||
void *argp6 = 0 ;
|
||||
int res6 = 0 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
PyObject * obj1 = 0 ;
|
||||
PyObject * obj2 = 0 ;
|
||||
PyObject * obj3 = 0 ;
|
||||
char * kwnames[] = {
|
||||
(char *) "lp_ctx",(char *) "session_info",(char *) "credentials", NULL
|
||||
(char *) "ev_ctx",(char *) "lp_ctx",(char *) "session_info",(char *) "credentials", NULL
|
||||
};
|
||||
|
||||
arg3 = loadparm_init(NULL);
|
||||
arg4 = NULL;
|
||||
arg3 = event_context_init(NULL);
|
||||
arg4 = loadparm_init(NULL);
|
||||
arg5 = NULL;
|
||||
arg6 = NULL;
|
||||
arg1 = NULL;
|
||||
arg2 = &tmp2;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|OOO:open_samba",kwnames,&obj0,&obj1,&obj2)) SWIG_fail;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|OOOO:open_samba",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
|
||||
if (obj0) {
|
||||
res3 = SWIG_ConvertPtr(obj0, &argp3,SWIGTYPE_p_loadparm_context, 0 | 0 );
|
||||
res3 = SWIG_ConvertPtr(obj0, &argp3,SWIGTYPE_p_event_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res3)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "open_samba" "', argument " "3"" of type '" "struct loadparm_context *""'");
|
||||
SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "open_samba" "', argument " "3"" of type '" "struct event_context *""'");
|
||||
}
|
||||
arg3 = (struct loadparm_context *)(argp3);
|
||||
arg3 = (struct event_context *)(argp3);
|
||||
}
|
||||
if (obj1) {
|
||||
res4 = SWIG_ConvertPtr(obj1, &argp4,SWIGTYPE_p_auth_session_info, 0 | 0 );
|
||||
res4 = SWIG_ConvertPtr(obj1, &argp4,SWIGTYPE_p_loadparm_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res4)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "open_samba" "', argument " "4"" of type '" "struct auth_session_info *""'");
|
||||
SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "open_samba" "', argument " "4"" of type '" "struct loadparm_context *""'");
|
||||
}
|
||||
arg4 = (struct auth_session_info *)(argp4);
|
||||
arg4 = (struct loadparm_context *)(argp4);
|
||||
}
|
||||
if (obj2) {
|
||||
res5 = SWIG_ConvertPtr(obj2, &argp5,SWIGTYPE_p_cli_credentials, 0 | 0 );
|
||||
res5 = SWIG_ConvertPtr(obj2, &argp5,SWIGTYPE_p_auth_session_info, 0 | 0 );
|
||||
if (!SWIG_IsOK(res5)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "open_samba" "', argument " "5"" of type '" "struct cli_credentials *""'");
|
||||
SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "open_samba" "', argument " "5"" of type '" "struct auth_session_info *""'");
|
||||
}
|
||||
arg5 = (struct cli_credentials *)(argp5);
|
||||
arg5 = (struct auth_session_info *)(argp5);
|
||||
}
|
||||
result = reg_open_samba(arg1,arg2,arg3,arg4,arg5);
|
||||
if (obj3) {
|
||||
res6 = SWIG_ConvertPtr(obj3, &argp6,SWIGTYPE_p_cli_credentials, 0 | 0 );
|
||||
if (!SWIG_IsOK(res6)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "open_samba" "', argument " "6"" of type '" "struct cli_credentials *""'");
|
||||
}
|
||||
arg6 = (struct cli_credentials *)(argp6);
|
||||
}
|
||||
result = reg_open_samba(arg1,arg2,arg3,arg4,arg5,arg6);
|
||||
if (!W_ERROR_IS_OK(result)) {
|
||||
PyObject *obj = Py_BuildValue((char *)"(i,s)", W_ERROR_V(result), win_errstr(result));
|
||||
PyErr_SetObject(PyExc_RuntimeError, obj);
|
||||
@ -3786,6 +3824,7 @@ static swig_type_info _swigt__p_TALLOC_CTX = {"_p_TALLOC_CTX", "TALLOC_CTX *", 0
|
||||
static swig_type_info _swigt__p_auth_session_info = {"_p_auth_session_info", "struct auth_session_info *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_cli_credentials = {"_p_cli_credentials", "struct cli_credentials *|cli_credentials *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_event_context = {"_p_event_context", "struct event_context *|event *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_hive_key = {"_p_hive_key", "struct hive_key *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_loadparm_context = {"_p_loadparm_context", "struct loadparm_context *|loadparm_context *", 0, 0, (void*)0, 0};
|
||||
@ -3813,6 +3852,7 @@ static swig_type_info *swig_type_initial[] = {
|
||||
&_swigt__p_auth_session_info,
|
||||
&_swigt__p_char,
|
||||
&_swigt__p_cli_credentials,
|
||||
&_swigt__p_event_context,
|
||||
&_swigt__p_hive_key,
|
||||
&_swigt__p_int,
|
||||
&_swigt__p_loadparm_context,
|
||||
@ -3840,6 +3880,7 @@ static swig_cast_info _swigc__p_TALLOC_CTX[] = { {&_swigt__p_TALLOC_CTX, 0, 0,
|
||||
static swig_cast_info _swigc__p_auth_session_info[] = { {&_swigt__p_auth_session_info, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_cli_credentials[] = { {&_swigt__p_cli_credentials, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_event_context[] = { {&_swigt__p_event_context, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_hive_key[] = { {&_swigt__p_hive_key, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_loadparm_context[] = { {&_swigt__p_loadparm_context, 0, 0, 0},{0, 0, 0, 0}};
|
||||
@ -3867,6 +3908,7 @@ static swig_cast_info *swig_cast_initial[] = {
|
||||
_swigc__p_auth_session_info,
|
||||
_swigc__p_char,
|
||||
_swigc__p_cli_credentials,
|
||||
_swigc__p_event_context,
|
||||
_swigc__p_hive_key,
|
||||
_swigc__p_int,
|
||||
_swigc__p_loadparm_context,
|
||||
|
@ -26,6 +26,7 @@
|
||||
*/
|
||||
|
||||
static WERROR mount_samba_hive(struct registry_context *ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info *auth_info,
|
||||
struct cli_credentials *creds,
|
||||
@ -40,11 +41,11 @@ static WERROR mount_samba_hive(struct registry_context *ctx,
|
||||
lp_private_dir(lp_ctx),
|
||||
name);
|
||||
|
||||
error = reg_open_hive(ctx, location, auth_info, creds, lp_ctx, &hive);
|
||||
error = reg_open_hive(ctx, location, auth_info, creds, event_ctx, lp_ctx, &hive);
|
||||
|
||||
if (W_ERROR_EQUAL(error, WERR_BADFILE))
|
||||
error = reg_open_ldb_file(ctx, location, auth_info,
|
||||
creds, lp_ctx, &hive);
|
||||
creds, event_ctx, lp_ctx, &hive);
|
||||
|
||||
if (!W_ERROR_IS_OK(error))
|
||||
return error;
|
||||
@ -55,6 +56,7 @@ static WERROR mount_samba_hive(struct registry_context *ctx,
|
||||
|
||||
_PUBLIC_ WERROR reg_open_samba(TALLOC_CTX *mem_ctx,
|
||||
struct registry_context **ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct auth_session_info *session_info,
|
||||
struct cli_credentials *credentials)
|
||||
@ -66,18 +68,18 @@ _PUBLIC_ WERROR reg_open_samba(TALLOC_CTX *mem_ctx,
|
||||
return result;
|
||||
}
|
||||
|
||||
mount_samba_hive(*ctx, lp_ctx, session_info, credentials,
|
||||
mount_samba_hive(*ctx, ev_ctx, lp_ctx, session_info, credentials,
|
||||
"hklm", HKEY_LOCAL_MACHINE);
|
||||
|
||||
mount_samba_hive(*ctx, lp_ctx, session_info, credentials,
|
||||
mount_samba_hive(*ctx, ev_ctx, lp_ctx, session_info, credentials,
|
||||
"hkcr", HKEY_CLASSES_ROOT);
|
||||
|
||||
/* FIXME: Should be mounted from NTUSER.DAT in the home directory of the
|
||||
* current user */
|
||||
mount_samba_hive(*ctx, lp_ctx, session_info, credentials,
|
||||
mount_samba_hive(*ctx, ev_ctx, lp_ctx, session_info, credentials,
|
||||
"hkcu", HKEY_CURRENT_USER);
|
||||
|
||||
mount_samba_hive(*ctx, lp_ctx, session_info, credentials,
|
||||
mount_samba_hive(*ctx, ev_ctx, lp_ctx, session_info, credentials,
|
||||
"hku", HKEY_USERS);
|
||||
|
||||
/* FIXME: Different hive backend for HKEY_CLASSES_ROOT: merged view of HKEY_LOCAL_MACHINE\Software\Classes
|
||||
|
@ -363,7 +363,7 @@ static bool hive_setup_ldb(struct torture_context *tctx, void **data)
|
||||
|
||||
rmdir(dirname);
|
||||
|
||||
error = reg_open_ldb_file(tctx, dirname, NULL, NULL, tctx->lp_ctx, &key);
|
||||
error = reg_open_ldb_file(tctx, dirname, NULL, NULL, tctx->ev, tctx->lp_ctx, &key);
|
||||
if (!W_ERROR_IS_OK(error)) {
|
||||
fprintf(stderr, "Unable to initialize ldb hive\n");
|
||||
return false;
|
||||
|
@ -524,7 +524,7 @@ static bool setup_local_registry(struct torture_context *tctx, void **data)
|
||||
torture_assert_ntstatus_ok(tctx, status, "Creating temp dir failed");
|
||||
|
||||
filename = talloc_asprintf(tctx, "%s/classes_root.ldb", tempdir);
|
||||
error = reg_open_ldb_file(tctx, filename, NULL, NULL, tctx->lp_ctx, &hive_key);
|
||||
error = reg_open_ldb_file(tctx, filename, NULL, NULL, tctx->ev, tctx->lp_ctx, &hive_key);
|
||||
torture_assert_werr_ok(tctx, error, "Opening classes_root file failed");
|
||||
|
||||
error = reg_mount_hive(rctx, hive_key, HKEY_CLASSES_ROOT, NULL);
|
||||
|
@ -42,6 +42,7 @@ struct registry_context *reg_common_open_remote(const char *remote,
|
||||
}
|
||||
|
||||
struct registry_key *reg_common_open_file(const char *path,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct cli_credentials *creds)
|
||||
{
|
||||
@ -49,7 +50,7 @@ struct registry_key *reg_common_open_file(const char *path,
|
||||
struct registry_context *h = NULL;
|
||||
WERROR error;
|
||||
|
||||
error = reg_open_hive(NULL, path, NULL, creds, lp_ctx, &hive_root);
|
||||
error = reg_open_hive(NULL, path, NULL, creds, ev_ctx, lp_ctx, &hive_root);
|
||||
|
||||
if(!W_ERROR_IS_OK(error)) {
|
||||
fprintf(stderr, "Unable to open '%s': %s \n",
|
||||
@ -67,12 +68,14 @@ struct registry_key *reg_common_open_file(const char *path,
|
||||
return reg_import_hive_key(h, hive_root, -1, NULL);
|
||||
}
|
||||
|
||||
struct registry_context *reg_common_open_local(struct cli_credentials *creds, struct loadparm_context *lp_ctx)
|
||||
struct registry_context *reg_common_open_local(struct cli_credentials *creds,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx)
|
||||
{
|
||||
WERROR error;
|
||||
struct registry_context *h = NULL;
|
||||
|
||||
error = reg_open_samba(NULL, &h, lp_ctx, NULL, creds);
|
||||
error = reg_open_samba(NULL, &h, ev_ctx, lp_ctx, NULL, creds);
|
||||
|
||||
if(!W_ERROR_IS_OK(error)) {
|
||||
fprintf(stderr, "Unable to open local registry:%s \n",
|
||||
|
@ -29,6 +29,7 @@
|
||||
enum reg_backend { REG_UNKNOWN, REG_LOCAL, REG_REMOTE, REG_NULL };
|
||||
|
||||
static struct registry_context *open_backend(poptContext pc,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
enum reg_backend backend,
|
||||
const char *remote_host)
|
||||
@ -41,7 +42,7 @@ static struct registry_context *open_backend(poptContext pc,
|
||||
poptPrintUsage(pc, stderr, 0);
|
||||
return NULL;
|
||||
case REG_LOCAL:
|
||||
error = reg_open_samba(NULL, &ctx, lp_ctx, NULL, cmdline_credentials);
|
||||
error = reg_open_samba(NULL, &ctx, ev_ctx, lp_ctx, NULL, cmdline_credentials);
|
||||
break;
|
||||
case REG_REMOTE:
|
||||
error = reg_open_remote(&ctx, NULL, cmdline_credentials, lp_ctx,
|
||||
@ -82,6 +83,7 @@ int main(int argc, const char **argv)
|
||||
};
|
||||
TALLOC_CTX *ctx;
|
||||
void *callback_data;
|
||||
struct event_context *ev_ctx;
|
||||
struct reg_diff_callbacks *callbacks;
|
||||
|
||||
ctx = talloc_init("regdiff");
|
||||
@ -116,11 +118,13 @@ int main(int argc, const char **argv)
|
||||
|
||||
}
|
||||
|
||||
h1 = open_backend(pc, cmdline_lp_ctx, backend1, remote1);
|
||||
ev_ctx = event_context_init(NULL);
|
||||
|
||||
h1 = open_backend(pc, ev_ctx, cmdline_lp_ctx, backend1, remote1);
|
||||
if (h1 == NULL)
|
||||
return 1;
|
||||
|
||||
h2 = open_backend(pc, cmdline_lp_ctx, backend2, remote2);
|
||||
h2 = open_backend(pc, ev_ctx, cmdline_lp_ctx, backend2, remote2);
|
||||
if (h2 == NULL)
|
||||
return 1;
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "lib/cmdline/popt_common.h"
|
||||
#include "lib/registry/tools/common.h"
|
||||
#include "param/param.h"
|
||||
#include "events/events.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
@ -33,6 +34,7 @@ int main(int argc, char **argv)
|
||||
struct registry_context *h;
|
||||
const char *file = NULL;
|
||||
const char *remote = NULL;
|
||||
struct event_context *ev;
|
||||
struct poptOption long_options[] = {
|
||||
POPT_AUTOHELP
|
||||
{"remote", 'R', POPT_ARG_STRING, &remote, 0, "connect to specified remote server", NULL},
|
||||
@ -47,10 +49,12 @@ int main(int argc, char **argv)
|
||||
while((opt = poptGetNextOpt(pc)) != -1) {
|
||||
}
|
||||
|
||||
ev = event_context_init(NULL);
|
||||
|
||||
if (remote) {
|
||||
h = reg_common_open_remote (remote, cmdline_lp_ctx, cmdline_credentials);
|
||||
} else {
|
||||
h = reg_common_open_local (cmdline_credentials, cmdline_lp_ctx);
|
||||
h = reg_common_open_local (cmdline_credentials, ev, cmdline_lp_ctx);
|
||||
}
|
||||
|
||||
if (h == NULL)
|
||||
|
@ -498,6 +498,7 @@ int main(int argc, char **argv)
|
||||
poptContext pc;
|
||||
const char *remote = NULL;
|
||||
struct regshell_context *ctx;
|
||||
struct event_context *ev_ctx;
|
||||
bool ret = true;
|
||||
struct poptOption long_options[] = {
|
||||
POPT_AUTOHELP
|
||||
@ -516,17 +517,19 @@ int main(int argc, char **argv)
|
||||
|
||||
ctx = talloc_zero(NULL, struct regshell_context);
|
||||
|
||||
ev_ctx = event_context_init(ctx);
|
||||
|
||||
if (remote != NULL) {
|
||||
ctx->registry = reg_common_open_remote(remote, cmdline_lp_ctx,
|
||||
cmdline_credentials);
|
||||
} else if (file != NULL) {
|
||||
ctx->current = reg_common_open_file(file, cmdline_lp_ctx, cmdline_credentials);
|
||||
ctx->current = reg_common_open_file(file, ev_ctx, cmdline_lp_ctx, cmdline_credentials);
|
||||
if (ctx->current == NULL)
|
||||
return 1;
|
||||
ctx->registry = ctx->current->context;
|
||||
ctx->path = talloc_strdup(ctx, "");
|
||||
} else {
|
||||
ctx->registry = reg_common_open_local(cmdline_credentials, cmdline_lp_ctx);
|
||||
ctx->registry = reg_common_open_local(cmdline_credentials, ev_ctx, cmdline_lp_ctx);
|
||||
}
|
||||
|
||||
if (ctx->registry == NULL)
|
||||
|
@ -109,6 +109,7 @@ int main(int argc, char **argv)
|
||||
poptContext pc;
|
||||
struct registry_context *h = NULL;
|
||||
struct registry_key *start_key = NULL;
|
||||
struct event_context *ev_ctx;
|
||||
WERROR error;
|
||||
bool fullpath = false, no_values = false;
|
||||
struct poptOption long_options[] = {
|
||||
@ -128,12 +129,14 @@ int main(int argc, char **argv)
|
||||
while((opt = poptGetNextOpt(pc)) != -1) {
|
||||
}
|
||||
|
||||
ev_ctx = event_context_init(NULL);
|
||||
|
||||
if (remote != NULL) {
|
||||
h = reg_common_open_remote(remote, cmdline_lp_ctx, cmdline_credentials);
|
||||
} else if (file != NULL) {
|
||||
start_key = reg_common_open_file(file, cmdline_lp_ctx, cmdline_credentials);
|
||||
start_key = reg_common_open_file(file, ev_ctx, cmdline_lp_ctx, cmdline_credentials);
|
||||
} else {
|
||||
h = reg_common_open_local(cmdline_credentials, cmdline_lp_ctx);
|
||||
h = reg_common_open_local(cmdline_credentials, ev_ctx, cmdline_lp_ctx);
|
||||
}
|
||||
|
||||
if (h == NULL && start_key == NULL)
|
||||
|
@ -793,7 +793,7 @@ static NTSTATUS becomeDC_ldap_connect(struct libnet_BecomeDC_state *s,
|
||||
url = talloc_asprintf(s, "ldap://%s/", s->source_dsa.dns_name);
|
||||
NT_STATUS_HAVE_NO_MEMORY(url);
|
||||
|
||||
ldap->ldb = ldb_wrap_connect(s, s->libnet->lp_ctx, url,
|
||||
ldap->ldb = ldb_wrap_connect(s, s->libnet->event_ctx, s->libnet->lp_ctx, url,
|
||||
NULL,
|
||||
s->libnet->cred,
|
||||
0, NULL);
|
||||
|
@ -230,7 +230,7 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
remote_ldb = ldb_wrap_connect(tmp_ctx, ctx->lp_ctx,
|
||||
remote_ldb = ldb_wrap_connect(tmp_ctx, ctx->event_ctx, ctx->lp_ctx,
|
||||
remote_ldb_url,
|
||||
NULL, ctx->cred, 0, NULL);
|
||||
if (!remote_ldb) {
|
||||
|
@ -1194,6 +1194,7 @@ static NTSTATUS libnet_samsync_ldb_init(TALLOC_CTX *mem_ctx,
|
||||
ldap_url = talloc_asprintf(state, "ldap://%s", server);
|
||||
|
||||
state->remote_ldb = ldb_wrap_connect(mem_ctx,
|
||||
state->samsync_state->machine_net_ctx->event_ctx,
|
||||
state->samsync_state->machine_net_ctx->lp_ctx,
|
||||
ldap_url,
|
||||
NULL, state->samsync_state->machine_net_ctx->cred,
|
||||
@ -1222,6 +1223,7 @@ NTSTATUS libnet_samsync_ldb(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, str
|
||||
state->trusted_domains = NULL;
|
||||
|
||||
state->sam_ldb = ldb_wrap_connect(mem_ctx,
|
||||
ctx->event_ctx,
|
||||
ctx->lp_ctx,
|
||||
lp_sam_url(ctx->lp_ctx),
|
||||
r->in.session_info,
|
||||
|
@ -310,7 +310,7 @@ static NTSTATUS unbecomeDC_ldap_connect(struct libnet_UnbecomeDC_state *s)
|
||||
url = talloc_asprintf(s, "ldap://%s/", s->source_dsa.dns_name);
|
||||
NT_STATUS_HAVE_NO_MEMORY(url);
|
||||
|
||||
s->ldap.ldb = ldb_wrap_connect(s, s->libnet->lp_ctx, url,
|
||||
s->ldap.ldb = ldb_wrap_connect(s, s->libnet->event_ctx, s->libnet->lp_ctx, url,
|
||||
NULL,
|
||||
s->libnet->cred,
|
||||
0, NULL);
|
||||
|
@ -70,6 +70,7 @@ struct vampire_state {
|
||||
const char *targetdir;
|
||||
|
||||
struct loadparm_context *lp_ctx;
|
||||
struct event_context *event_ctx;
|
||||
};
|
||||
|
||||
static NTSTATUS vampire_prepare_db(void *private_data,
|
||||
@ -335,7 +336,7 @@ static NTSTATUS vampire_apply_schema(struct vampire_state *s,
|
||||
s->schema = NULL;
|
||||
|
||||
DEBUG(0,("Reopen the SAM LDB with system credentials and a already stored schema\n"));
|
||||
s->ldb = samdb_connect(s, s->lp_ctx,
|
||||
s->ldb = samdb_connect(s, s->event_ctx, s->lp_ctx,
|
||||
system_session(s, s->lp_ctx));
|
||||
if (!s->ldb) {
|
||||
DEBUG(0,("Failed to reopen sam.ldb\n"));
|
||||
@ -569,7 +570,6 @@ NTSTATUS libnet_Vampire(struct libnet_context *ctx, TALLOC_CTX *mem_ctx,
|
||||
struct libnet_JoinDomain *join;
|
||||
struct libnet_set_join_secrets *set_secrets;
|
||||
struct libnet_BecomeDC b;
|
||||
struct libnet_UnbecomeDC u;
|
||||
struct vampire_state *s;
|
||||
struct ldb_message *msg;
|
||||
int ldb_ret;
|
||||
@ -581,12 +581,13 @@ NTSTATUS libnet_Vampire(struct libnet_context *ctx, TALLOC_CTX *mem_ctx,
|
||||
|
||||
r->out.error_string = NULL;
|
||||
|
||||
s = talloc_zero(mem_ctx , struct vampire_state);
|
||||
s = talloc_zero(mem_ctx, struct vampire_state);
|
||||
if (!s) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
s->lp_ctx = ctx->lp_ctx;
|
||||
s->event_ctx = ctx->event_ctx;
|
||||
|
||||
join = talloc_zero(s, struct libnet_JoinDomain);
|
||||
if (!join) {
|
||||
|
@ -54,7 +54,7 @@ static void nbtd_netlogon_getdc(struct dgram_mailslot_handler *dgmslot,
|
||||
return;
|
||||
}
|
||||
|
||||
samctx = samdb_connect(packet, iface->nbtsrv->task->lp_ctx, anonymous_session(packet, iface->nbtsrv->task->lp_ctx));
|
||||
samctx = samdb_connect(packet, iface->nbtsrv->task->event_ctx, iface->nbtsrv->task->lp_ctx, anonymous_session(packet, iface->nbtsrv->task->event_ctx, iface->nbtsrv->task->lp_ctx));
|
||||
if (samctx == NULL) {
|
||||
DEBUG(2,("Unable to open sam in getdc reply\n"));
|
||||
return;
|
||||
@ -125,7 +125,7 @@ static void nbtd_netlogon_getdc2(struct dgram_mailslot_handler *dgmslot,
|
||||
return;
|
||||
}
|
||||
|
||||
samctx = samdb_connect(packet, iface->nbtsrv->task->lp_ctx, anonymous_session(packet, iface->nbtsrv->task->lp_ctx));
|
||||
samctx = samdb_connect(packet, iface->nbtsrv->task->event_ctx, iface->nbtsrv->task->lp_ctx, anonymous_session(packet, iface->nbtsrv->task->event_ctx, iface->nbtsrv->task->lp_ctx));
|
||||
if (samctx == NULL) {
|
||||
DEBUG(2,("Unable to open sam in getdc reply\n"));
|
||||
return;
|
||||
|
@ -66,7 +66,7 @@ static void nbtd_task_init(struct task_server *task)
|
||||
return;
|
||||
}
|
||||
|
||||
nbtsrv->sam_ctx = samdb_connect(nbtsrv, task->lp_ctx, anonymous_session(nbtsrv, task->lp_ctx));
|
||||
nbtsrv->sam_ctx = samdb_connect(nbtsrv, task->event_ctx, task->lp_ctx, anonymous_session(nbtsrv, task->event_ctx, task->lp_ctx));
|
||||
if (nbtsrv->sam_ctx == NULL) {
|
||||
task_server_terminate(task, "nbtd failed to open samdb");
|
||||
return;
|
||||
|
@ -945,7 +945,8 @@ failed:
|
||||
return NBT_RCODE_SVR;
|
||||
}
|
||||
|
||||
static bool winsdb_check_or_add_module_list(struct loadparm_context *lp_ctx, struct winsdb_handle *h)
|
||||
static bool winsdb_check_or_add_module_list(struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx, struct winsdb_handle *h)
|
||||
{
|
||||
int trans;
|
||||
int ret;
|
||||
@ -992,7 +993,7 @@ static bool winsdb_check_or_add_module_list(struct loadparm_context *lp_ctx, str
|
||||
flags |= LDB_FLG_NOSYNC;
|
||||
}
|
||||
|
||||
h->ldb = ldb_wrap_connect(h, lp_ctx, lock_path(h, lp_ctx, lp_wins_url(lp_ctx)),
|
||||
h->ldb = ldb_wrap_connect(h, ev_ctx, lp_ctx, lock_path(h, lp_ctx, lp_wins_url(lp_ctx)),
|
||||
NULL, NULL, flags, NULL);
|
||||
if (!h->ldb) goto failed;
|
||||
|
||||
@ -1010,7 +1011,9 @@ failed:
|
||||
return false;
|
||||
}
|
||||
|
||||
struct winsdb_handle *winsdb_connect(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
|
||||
struct winsdb_handle *winsdb_connect(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *owner,
|
||||
enum winsdb_handle_caller caller)
|
||||
{
|
||||
@ -1026,7 +1029,7 @@ struct winsdb_handle *winsdb_connect(TALLOC_CTX *mem_ctx, struct loadparm_contex
|
||||
flags |= LDB_FLG_NOSYNC;
|
||||
}
|
||||
|
||||
h->ldb = ldb_wrap_connect(h, lp_ctx, lock_path(h, lp_ctx, lp_wins_url(lp_ctx)),
|
||||
h->ldb = ldb_wrap_connect(h, ev_ctx, lp_ctx, lock_path(h, lp_ctx, lp_wins_url(lp_ctx)),
|
||||
NULL, NULL, flags, NULL);
|
||||
if (!h->ldb) goto failed;
|
||||
|
||||
@ -1037,7 +1040,7 @@ struct winsdb_handle *winsdb_connect(TALLOC_CTX *mem_ctx, struct loadparm_contex
|
||||
if (!h->local_owner) goto failed;
|
||||
|
||||
/* make sure the module list is available and used */
|
||||
ret = winsdb_check_or_add_module_list(lp_ctx, h);
|
||||
ret = winsdb_check_or_add_module_list(ev_ctx, lp_ctx, h);
|
||||
if (!ret) goto failed;
|
||||
|
||||
ldb_err = ldb_set_opaque(h->ldb, "winsdb_handle", h);
|
||||
|
@ -985,7 +985,8 @@ NTSTATUS nbtd_winsserver_init(struct nbtd_server *nbtsrv)
|
||||
owner = iface_n_ip(ifaces, 0);
|
||||
}
|
||||
|
||||
nbtsrv->winssrv->wins_db = winsdb_connect(nbtsrv->winssrv, nbtsrv->task->lp_ctx,
|
||||
nbtsrv->winssrv->wins_db = winsdb_connect(nbtsrv->winssrv, nbtsrv->task->event_ctx,
|
||||
nbtsrv->task->lp_ctx,
|
||||
owner, WINSDB_HANDLE_CALLER_NBTD);
|
||||
if (!nbtsrv->winssrv->wins_db) {
|
||||
return NT_STATUS_INTERNAL_DB_ERROR;
|
||||
|
@ -220,6 +220,7 @@ struct ntptr_ops {
|
||||
struct ntptr_context {
|
||||
const struct ntptr_ops *ops;
|
||||
void *private_data;
|
||||
struct event_context *ev_ctx;
|
||||
struct loadparm_context *lp_ctx;
|
||||
};
|
||||
|
||||
|
@ -120,7 +120,8 @@ const struct ntptr_critical_sizes *ntptr_interface_version(void)
|
||||
/*
|
||||
create a ntptr_context with a specified NTPTR backend
|
||||
*/
|
||||
NTSTATUS ntptr_init_context(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
|
||||
NTSTATUS ntptr_init_context(TALLOC_CTX *mem_ctx, struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *providor, struct ntptr_context **_ntptr)
|
||||
{
|
||||
NTSTATUS status;
|
||||
@ -134,6 +135,7 @@ NTSTATUS ntptr_init_context(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx
|
||||
NT_STATUS_HAVE_NO_MEMORY(ntptr);
|
||||
ntptr->private_data = NULL;
|
||||
ntptr->ops = ntptr_backend_byname(providor);
|
||||
ntptr->ev_ctx = ev_ctx;
|
||||
ntptr->lp_ctx = lp_ctx;
|
||||
|
||||
if (!ntptr->ops) {
|
||||
|
@ -42,9 +42,9 @@
|
||||
connect to the SPOOLSS database
|
||||
return a ldb_context pointer on success, or NULL on failure
|
||||
*/
|
||||
static struct ldb_context *sptr_db_connect(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
|
||||
static struct ldb_context *sptr_db_connect(TALLOC_CTX *mem_ctx, struct event_context *ev_ctx, struct loadparm_context *lp_ctx)
|
||||
{
|
||||
return ldb_wrap_connect(mem_ctx, lp_ctx, lp_spoolss_url(lp_ctx), system_session(mem_ctx, lp_ctx),
|
||||
return ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx, lp_spoolss_url(lp_ctx), system_session(mem_ctx, lp_ctx),
|
||||
NULL, 0, NULL);
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ static int sptr_db_search(struct ldb_context *ldb,
|
||||
|
||||
static NTSTATUS sptr_init_context(struct ntptr_context *ntptr)
|
||||
{
|
||||
struct ldb_context *sptr_db = sptr_db_connect(ntptr, ntptr->lp_ctx);
|
||||
struct ldb_context *sptr_db = sptr_db_connect(ntptr, ntptr->ev_ctx, ntptr->lp_ctx);
|
||||
NT_STATUS_HAVE_NO_MEMORY(sptr_db);
|
||||
|
||||
ntptr->private_data = sptr_db;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "includes.h"
|
||||
#include "libcli/raw/interfaces.h"
|
||||
#include "libcli/rap/rap.h"
|
||||
#include "events/events.h"
|
||||
#include "ntvfs/ipc/proto.h"
|
||||
#include "librpc/ndr/libndr.h"
|
||||
#include "param/param.h"
|
||||
@ -100,11 +101,14 @@ struct rap_call {
|
||||
|
||||
struct ndr_pull *ndr_pull_param;
|
||||
struct ndr_pull *ndr_pull_data;
|
||||
|
||||
struct event_context *event_ctx;
|
||||
};
|
||||
|
||||
#define RAPNDR_FLAGS (LIBNDR_FLAG_NOALIGN|LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
|
||||
|
||||
static struct rap_call *new_rap_srv_call(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct smb_trans2 *trans)
|
||||
{
|
||||
@ -118,6 +122,7 @@ static struct rap_call *new_rap_srv_call(TALLOC_CTX *mem_ctx,
|
||||
ZERO_STRUCTP(call);
|
||||
|
||||
call->lp_ctx = talloc_reference(call, lp_ctx);
|
||||
call->event_ctx = ev_ctx;
|
||||
|
||||
call->mem_ctx = mem_ctx;
|
||||
|
||||
@ -271,7 +276,7 @@ static NTSTATUS _rap_netshareenum(struct rap_call *call)
|
||||
break;
|
||||
}
|
||||
|
||||
result = rap_netshareenum(call, call->lp_ctx, &r);
|
||||
result = rap_netshareenum(call, call->event_ctx, call->lp_ctx, &r);
|
||||
|
||||
if (!NT_STATUS_IS_OK(result))
|
||||
return result;
|
||||
@ -430,7 +435,7 @@ static const struct
|
||||
{NULL, -1, api_Unsupported}
|
||||
};
|
||||
|
||||
NTSTATUS ipc_rap_call(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
|
||||
NTSTATUS ipc_rap_call(TALLOC_CTX *mem_ctx, struct event_context *event_ctx, struct loadparm_context *lp_ctx,
|
||||
struct smb_trans2 *trans)
|
||||
{
|
||||
int i;
|
||||
@ -440,7 +445,7 @@ NTSTATUS ipc_rap_call(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx,
|
||||
struct ndr_push *final_param;
|
||||
struct ndr_push *final_data;
|
||||
|
||||
call = new_rap_srv_call(mem_ctx, lp_ctx, trans);
|
||||
call = new_rap_srv_call(mem_ctx, event_ctx, lp_ctx, trans);
|
||||
|
||||
if (call == NULL)
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
|
@ -29,6 +29,7 @@
|
||||
* idea. */
|
||||
|
||||
NTSTATUS rap_netshareenum(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct rap_NetShareEnum *r)
|
||||
{
|
||||
@ -42,7 +43,7 @@ NTSTATUS rap_netshareenum(TALLOC_CTX *mem_ctx,
|
||||
r->out.available = 0;
|
||||
r->out.info = NULL;
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(lp_ctx), lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(lp_ctx), event_ctx, lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return nterr;
|
||||
}
|
||||
|
@ -805,7 +805,7 @@ static NTSTATUS ipc_trans(struct ntvfs_module_context *ntvfs,
|
||||
NTSTATUS status;
|
||||
|
||||
if (strequal(trans->in.trans_name, "\\PIPE\\LANMAN"))
|
||||
return ipc_rap_call(req, ntvfs->ctx->lp_ctx, trans);
|
||||
return ipc_rap_call(req, ntvfs->ctx->event_ctx, ntvfs->ctx->lp_ctx, trans);
|
||||
|
||||
if (trans->in.setup_count != 2) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
|
@ -127,6 +127,7 @@ NTSTATUS share_register(const struct share_ops *ops)
|
||||
}
|
||||
|
||||
NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, const char *backend_name,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct share_context **ctx)
|
||||
{
|
||||
@ -138,7 +139,7 @@ NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, const char *backend_name
|
||||
return NT_STATUS_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
return ops->init(mem_ctx, ops, lp_ctx, ctx);
|
||||
return ops->init(mem_ctx, ops, event_ctx, lp_ctx, ctx);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -47,9 +47,12 @@ struct share_info {
|
||||
void *value;
|
||||
};
|
||||
|
||||
struct event_context;
|
||||
|
||||
struct share_ops {
|
||||
const char *name;
|
||||
NTSTATUS (*init)(TALLOC_CTX *, const struct share_ops*, struct loadparm_context *lp_ctx,
|
||||
NTSTATUS (*init)(TALLOC_CTX *, const struct share_ops*, struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct share_context **);
|
||||
const char *(*string_option)(struct share_config *, const char *, const char *);
|
||||
int (*int_option)(struct share_config *, const char *, int);
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
static NTSTATUS sclassic_init(TALLOC_CTX *mem_ctx,
|
||||
const struct share_ops *ops,
|
||||
struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct share_context **ctx)
|
||||
{
|
||||
|
@ -27,7 +27,9 @@
|
||||
#include "param/share.h"
|
||||
#include "param/param.h"
|
||||
|
||||
static NTSTATUS sldb_init(TALLOC_CTX *mem_ctx, const struct share_ops *ops, struct loadparm_context *lp_ctx,
|
||||
static NTSTATUS sldb_init(TALLOC_CTX *mem_ctx, const struct share_ops *ops,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct share_context **ctx)
|
||||
{
|
||||
struct ldb_context *sdb;
|
||||
@ -38,7 +40,7 @@ static NTSTATUS sldb_init(TALLOC_CTX *mem_ctx, const struct share_ops *ops, stru
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
sdb = ldb_wrap_connect(*ctx, lp_ctx,
|
||||
sdb = ldb_wrap_connect(*ctx, ev_ctx, lp_ctx,
|
||||
private_path(*ctx, lp_ctx, "share.ldb"),
|
||||
system_session(*ctx, lp_ctx),
|
||||
NULL, 0, NULL);
|
||||
|
@ -182,12 +182,12 @@ static void tcase_add_share_tests(struct torture_tcase *tcase)
|
||||
|
||||
static bool setup_ldb(struct torture_context *tctx, void **data)
|
||||
{
|
||||
return NT_STATUS_IS_OK(share_get_context_by_name(tctx, "ldb", tctx->lp_ctx, (struct share_context **)data));
|
||||
return NT_STATUS_IS_OK(share_get_context_by_name(tctx, "ldb", tctx->ev, tctx->lp_ctx, (struct share_context **)data));
|
||||
}
|
||||
|
||||
static bool setup_classic(struct torture_context *tctx, void **data)
|
||||
{
|
||||
return NT_STATUS_IS_OK(share_get_context_by_name(tctx, "classic", tctx->lp_ctx, (struct share_context **)data));
|
||||
return NT_STATUS_IS_OK(share_get_context_by_name(tctx, "classic", tctx->ev, tctx->lp_ctx, (struct share_context **)data));
|
||||
}
|
||||
|
||||
static bool teardown(struct torture_context *tctx, void *data)
|
||||
|
@ -82,7 +82,7 @@ uint32_t dcesrv_common_get_version_build(TALLOC_CTX *mem_ctx, struct loadparm_co
|
||||
}
|
||||
|
||||
/* This hardcoded value should go into a ldb database! */
|
||||
uint32_t dcesrv_common_get_server_type(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx)
|
||||
uint32_t dcesrv_common_get_server_type(TALLOC_CTX *mem_ctx, struct event_context *event_ctx, struct dcesrv_context *dce_ctx)
|
||||
{
|
||||
int default_server_announce = 0;
|
||||
default_server_announce |= SV_TYPE_WORKSTATION;
|
||||
@ -118,7 +118,7 @@ uint32_t dcesrv_common_get_server_type(TALLOC_CTX *mem_ctx, struct dcesrv_contex
|
||||
break;
|
||||
}
|
||||
/* open main ldb */
|
||||
samctx = samdb_connect(tmp_ctx, dce_ctx->lp_ctx, anonymous_session(tmp_ctx, dce_ctx->lp_ctx));
|
||||
samctx = samdb_connect(tmp_ctx, event_ctx, dce_ctx->lp_ctx, anonymous_session(tmp_ctx, event_ctx, dce_ctx->lp_ctx));
|
||||
if (samctx == NULL) {
|
||||
DEBUG(2,("Unable to open samdb in determining server announce flags\n"));
|
||||
} else {
|
||||
|
@ -58,7 +58,7 @@ static WERROR dcesrv_drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_C
|
||||
/*
|
||||
* connect to the samdb
|
||||
*/
|
||||
b_state->sam_ctx = samdb_connect(b_state, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
b_state->sam_ctx = samdb_connect(b_state, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (!b_state->sam_ctx) {
|
||||
return WERR_FOOBAR;
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ NTSTATUS dcesrv_lsa_get_policy_state(struct dcesrv_call_state *dce_call, TALLOC_
|
||||
}
|
||||
|
||||
/* make sure the sam database is accessible */
|
||||
state->sam_ldb = samdb_connect(state, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
state->sam_ldb = samdb_connect(state, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (state->sam_ldb == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
|
@ -195,7 +195,8 @@ static NTSTATUS lookup_well_known_sids(TALLOC_CTX *mem_ctx,
|
||||
/*
|
||||
lookup a SID for 1 name
|
||||
*/
|
||||
static NTSTATUS dcesrv_lsa_lookup_name(struct loadparm_context *lp_ctx,
|
||||
static NTSTATUS dcesrv_lsa_lookup_name(struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
struct lsa_policy_state *state, TALLOC_CTX *mem_ctx,
|
||||
const char *name, const char **authority_name,
|
||||
struct dom_sid **sid, enum lsa_SidType *rtype)
|
||||
@ -218,7 +219,7 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct loadparm_context *lp_ctx,
|
||||
}
|
||||
username = p + 1;
|
||||
} else if (strchr_m(name, '@')) {
|
||||
status = crack_name_to_nt4_name(mem_ctx, lp_ctx, DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL, name, &domain, &username);
|
||||
status = crack_name_to_nt4_name(mem_ctx, ev_ctx, lp_ctx, DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL, name, &domain, &username);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(3, ("Failed to crack name %s into an NT4 name: %s\n", name, nt_errstr(status)));
|
||||
return status;
|
||||
@ -265,7 +266,7 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct loadparm_context *lp_ctx,
|
||||
if (!name) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
status = dcesrv_lsa_lookup_name(lp_ctx, state, mem_ctx, name, authority_name, sid, rtype);
|
||||
status = dcesrv_lsa_lookup_name(ev_ctx, lp_ctx, state, mem_ctx, name, authority_name, sid, rtype);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
@ -275,7 +276,7 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct loadparm_context *lp_ctx,
|
||||
if (!name) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
status = dcesrv_lsa_lookup_name(lp_ctx, state, mem_ctx, name, authority_name, sid, rtype);
|
||||
status = dcesrv_lsa_lookup_name(ev_ctx, lp_ctx, state, mem_ctx, name, authority_name, sid, rtype);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
@ -285,7 +286,7 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct loadparm_context *lp_ctx,
|
||||
if (!name) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
status = dcesrv_lsa_lookup_name(lp_ctx, state, mem_ctx, name, authority_name, sid, rtype);
|
||||
status = dcesrv_lsa_lookup_name(ev_ctx, lp_ctx, state, mem_ctx, name, authority_name, sid, rtype);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
@ -721,7 +722,7 @@ NTSTATUS dcesrv_lsa_LookupNames3(struct dcesrv_call_state *dce_call,
|
||||
r->out.sids->sids[i].sid_index = 0xFFFFFFFF;
|
||||
r->out.sids->sids[i].unknown = 0;
|
||||
|
||||
status2 = dcesrv_lsa_lookup_name(lp_ctx, policy_state, mem_ctx, name, &authority_name, &sid, &rtype);
|
||||
status2 = dcesrv_lsa_lookup_name(dce_call->event_ctx, lp_ctx, policy_state, mem_ctx, name, &authority_name, &sid, &rtype);
|
||||
if (!NT_STATUS_IS_OK(status2) || sid->num_auths == 0) {
|
||||
continue;
|
||||
}
|
||||
@ -854,7 +855,7 @@ NTSTATUS dcesrv_lsa_LookupNames2(struct dcesrv_call_state *dce_call,
|
||||
r->out.sids->sids[i].sid_index = 0xFFFFFFFF;
|
||||
r->out.sids->sids[i].unknown = 0;
|
||||
|
||||
status2 = dcesrv_lsa_lookup_name(lp_ctx, state, mem_ctx, name,
|
||||
status2 = dcesrv_lsa_lookup_name(dce_call->event_ctx, lp_ctx, state, mem_ctx, name,
|
||||
&authority_name, &sid, &rtype);
|
||||
if (!NT_STATUS_IS_OK(status2)) {
|
||||
continue;
|
||||
|
@ -93,7 +93,7 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate3(struct dcesrv_call_state *dce_ca
|
||||
return NT_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
@ -176,7 +176,7 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate3(struct dcesrv_call_state *dce_ca
|
||||
|
||||
|
||||
/* remember this session key state */
|
||||
nt_status = schannel_store_session_key(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, creds);
|
||||
nt_status = schannel_store_session_key(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, creds);
|
||||
|
||||
return nt_status;
|
||||
}
|
||||
@ -236,7 +236,8 @@ static NTSTATUS dcesrv_netr_ServerAuthenticate2(struct dcesrv_call_state *dce_ca
|
||||
the caller needs some of that information.
|
||||
|
||||
*/
|
||||
static NTSTATUS dcesrv_netr_creds_server_step_check(struct loadparm_context *lp_ctx,
|
||||
static NTSTATUS dcesrv_netr_creds_server_step_check(struct event_context *event_ctx,
|
||||
struct loadparm_context *lp_ctx,
|
||||
const char *computer_name,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
struct netr_Authenticator *received_authenticator,
|
||||
@ -248,7 +249,7 @@ static NTSTATUS dcesrv_netr_creds_server_step_check(struct loadparm_context *lp_
|
||||
struct ldb_context *ldb;
|
||||
int ret;
|
||||
|
||||
ldb = schannel_db_connect(mem_ctx, lp_ctx);
|
||||
ldb = schannel_db_connect(mem_ctx, event_ctx, lp_ctx);
|
||||
if (!ldb) {
|
||||
return NT_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
@ -300,13 +301,13 @@ static NTSTATUS dcesrv_netr_ServerPasswordSet(struct dcesrv_call_state *dce_call
|
||||
struct ldb_context *sam_ctx;
|
||||
NTSTATUS nt_status;
|
||||
|
||||
nt_status = dcesrv_netr_creds_server_step_check(dce_call->conn->dce_ctx->lp_ctx,
|
||||
nt_status = dcesrv_netr_creds_server_step_check(dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
r->in.computer_name, mem_ctx,
|
||||
&r->in.credential, &r->out.return_authenticator,
|
||||
&creds);
|
||||
NT_STATUS_NOT_OK_RETURN(nt_status);
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
@ -339,13 +340,13 @@ static NTSTATUS dcesrv_netr_ServerPasswordSet2(struct dcesrv_call_state *dce_cal
|
||||
|
||||
struct samr_CryptPassword password_buf;
|
||||
|
||||
nt_status = dcesrv_netr_creds_server_step_check(dce_call->conn->dce_ctx->lp_ctx,
|
||||
nt_status = dcesrv_netr_creds_server_step_check(dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
r->in.computer_name, mem_ctx,
|
||||
&r->in.credential, &r->out.return_authenticator,
|
||||
&creds);
|
||||
NT_STATUS_NOT_OK_RETURN(nt_status);
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
@ -561,7 +562,7 @@ static NTSTATUS dcesrv_netr_LogonSamLogonEx(struct dcesrv_call_state *dce_call,
|
||||
{
|
||||
NTSTATUS nt_status;
|
||||
struct creds_CredentialState *creds;
|
||||
nt_status = schannel_fetch_session_key(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, r->in.computer_name, lp_workgroup(dce_call->conn->dce_ctx->lp_ctx), &creds);
|
||||
nt_status = schannel_fetch_session_key(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, r->in.computer_name, lp_workgroup(dce_call->conn->dce_ctx->lp_ctx), &creds);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
return nt_status;
|
||||
}
|
||||
@ -589,7 +590,7 @@ static NTSTATUS dcesrv_netr_LogonSamLogonWithFlags(struct dcesrv_call_state *dce
|
||||
return_authenticator = talloc(mem_ctx, struct netr_Authenticator);
|
||||
NT_STATUS_HAVE_NO_MEMORY(return_authenticator);
|
||||
|
||||
nt_status = dcesrv_netr_creds_server_step_check(dce_call->conn->dce_ctx->lp_ctx,
|
||||
nt_status = dcesrv_netr_creds_server_step_check(dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
r->in.computer_name, mem_ctx,
|
||||
r->in.credential, return_authenticator,
|
||||
&creds);
|
||||
@ -891,14 +892,14 @@ static NTSTATUS dcesrv_netr_LogonGetDomainInfo(struct dcesrv_call_state *dce_cal
|
||||
|
||||
const char *local_domain;
|
||||
|
||||
status = dcesrv_netr_creds_server_step_check(dce_call->conn->dce_ctx->lp_ctx,
|
||||
status = dcesrv_netr_creds_server_step_check(dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
r->in.computer_name, mem_ctx,
|
||||
r->in.credential,
|
||||
r->out.return_authenticator,
|
||||
NULL);
|
||||
NT_STATUS_NOT_OK_RETURN(status);
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
@ -1003,7 +1004,7 @@ static WERROR dcesrv_netr_DsRGetDCNameEx2(struct dcesrv_call_state *dce_call, TA
|
||||
|
||||
ZERO_STRUCT(r->out);
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (sam_ctx == NULL) {
|
||||
return WERR_DS_SERVICE_UNAVAILABLE;
|
||||
}
|
||||
@ -1165,7 +1166,7 @@ static WERROR dcesrv_netr_DsrEnumerateDomainTrusts(struct dcesrv_call_state *dce
|
||||
|
||||
ZERO_STRUCT(r->out);
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (sam_ctx == NULL) {
|
||||
return WERR_GENERAL_FAILURE;
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ static NTSTATUS dcesrv_samr_Connect(struct dcesrv_call_state *dce_call, TALLOC_C
|
||||
}
|
||||
|
||||
/* make sure the sam database is accessible */
|
||||
c_state->sam_ctx = samdb_connect(c_state, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
c_state->sam_ctx = samdb_connect(c_state, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (c_state->sam_ctx == NULL) {
|
||||
talloc_free(c_state);
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
@ -4135,7 +4135,7 @@ static NTSTATUS dcesrv_samr_GetDomPwInfo(struct dcesrv_call_state *dce_call, TAL
|
||||
|
||||
ZERO_STRUCT(r->out.info);
|
||||
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info);
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ NTSTATUS dcesrv_samr_ChangePasswordUser(struct dcesrv_call_state *dce_call,
|
||||
}
|
||||
|
||||
/* To change a password we need to open as system */
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
@ -205,7 +205,7 @@ NTSTATUS dcesrv_samr_OemChangePasswordUser2(struct dcesrv_call_state *dce_call,
|
||||
}
|
||||
|
||||
/* To change a password we need to open as system */
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
@ -343,7 +343,7 @@ NTSTATUS dcesrv_samr_ChangePasswordUser3(struct dcesrv_call_state *dce_call,
|
||||
}
|
||||
|
||||
/* To change a password we need to open as system */
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
sam_ctx = samdb_connect(mem_ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, system_session(mem_ctx, dce_call->conn->dce_ctx->lp_ctx));
|
||||
if (sam_ctx == NULL) {
|
||||
return NT_STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ static void dcesrv_sock_accept(struct stream_connection *srv_conn)
|
||||
struct dcesrv_connection *dcesrv_conn = NULL;
|
||||
struct auth_session_info *session_info = NULL;
|
||||
|
||||
status = auth_anonymous_session_info(srv_conn, dcesrv_sock->dcesrv_ctx->lp_ctx, &session_info);
|
||||
status = auth_anonymous_session_info(srv_conn, srv_conn->event.ctx, dcesrv_sock->dcesrv_ctx->lp_ctx, &session_info);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0,("dcesrv_sock_accept: auth_anonymous_session_info failed: %s\n",
|
||||
nt_errstr(status)));
|
||||
|
@ -216,7 +216,7 @@ static NTSTATUS dcerpc_spoolss_bind(struct dcesrv_call_state *dce_call, const st
|
||||
NTSTATUS status;
|
||||
struct ntptr_context *ntptr;
|
||||
|
||||
status = ntptr_init_context(dce_call->context, dce_call->conn->dce_ctx->lp_ctx,
|
||||
status = ntptr_init_context(dce_call->context, dce_call->conn->event_ctx, dce_call->conn->dce_ctx->lp_ctx,
|
||||
lp_ntptr_providor(dce_call->conn->dce_ctx->lp_ctx), &ntptr);
|
||||
NT_STATUS_NOT_OK_RETURN(status);
|
||||
|
||||
|
@ -445,7 +445,7 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL
|
||||
int count = 8;
|
||||
int i;
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -543,7 +543,7 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL
|
||||
int count = 10;
|
||||
int i;
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -735,7 +735,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call,
|
||||
/* TODO: - paging of results
|
||||
*/
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -984,7 +984,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call,
|
||||
return WERR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -1238,7 +1238,7 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call,
|
||||
return WERR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -1415,7 +1415,7 @@ static WERROR dcesrv_srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TA
|
||||
}
|
||||
all_string_sub(device, "\\", "/", 0);
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -1499,7 +1499,7 @@ static WERROR dcesrv_srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TA
|
||||
|
||||
info101->version_major = dcesrv_common_get_version_major(mem_ctx, dce_ctx->lp_ctx);
|
||||
info101->version_minor = dcesrv_common_get_version_minor(mem_ctx, dce_ctx->lp_ctx);
|
||||
info101->server_type = dcesrv_common_get_server_type(mem_ctx, dce_ctx);
|
||||
info101->server_type = dcesrv_common_get_server_type(mem_ctx, dce_call->event_ctx, dce_ctx);
|
||||
info101->comment = talloc_strdup(mem_ctx, lp_serverstring(dce_ctx->lp_ctx));
|
||||
W_ERROR_HAVE_NO_MEMORY(info101->comment);
|
||||
|
||||
@ -1519,7 +1519,7 @@ static WERROR dcesrv_srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TA
|
||||
|
||||
info102->version_major = dcesrv_common_get_version_major(mem_ctx, dce_ctx->lp_ctx);
|
||||
info102->version_minor = dcesrv_common_get_version_minor(mem_ctx, dce_ctx->lp_ctx);
|
||||
info102->server_type = dcesrv_common_get_server_type(mem_ctx, dce_ctx);
|
||||
info102->server_type = dcesrv_common_get_server_type(mem_ctx, dce_call->event_ctx, dce_ctx);
|
||||
info102->comment = talloc_strdup(mem_ctx, lp_serverstring(dce_ctx->lp_ctx));
|
||||
W_ERROR_HAVE_NO_MEMORY(info102->comment);
|
||||
|
||||
@ -1829,7 +1829,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL
|
||||
/* TODO: - paging of results
|
||||
*/
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
@ -2292,7 +2292,7 @@ static WERROR dcesrv_srvsvc_NetShareDel(struct dcesrv_call_state *dce_call, TALL
|
||||
NTSTATUS nterr;
|
||||
struct share_context *sctx;
|
||||
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
nterr = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(nterr)) {
|
||||
return ntstatus_to_werror(nterr);
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ NTSTATUS srvsvc_create_ntvfs_context(struct dcesrv_call_state *dce_call,
|
||||
struct share_config *scfg;
|
||||
const char *sharetype;
|
||||
|
||||
status = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
status = share_get_context_by_name(mem_ctx, lp_share_backend(dce_call->conn->dce_ctx->lp_ctx), dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, &sctx);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ static NTSTATUS dcerpc_winreg_bind(struct dcesrv_call_state *dce_call,
|
||||
WERROR err;
|
||||
|
||||
err = reg_open_samba(dce_call->context,
|
||||
&ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info,
|
||||
&ctx, dce_call->event_ctx, dce_call->conn->dce_ctx->lp_ctx, dce_call->conn->auth_state.session_info,
|
||||
NULL);
|
||||
|
||||
if (!W_ERROR_IS_OK(err)) {
|
||||
|
@ -109,7 +109,7 @@ static int ejs_doauth(MprVarHandle eid,
|
||||
goto done;
|
||||
}
|
||||
|
||||
nt_status = auth_generate_session_info(tmp_ctx, mprLpCtx(), server_info, &session_info);
|
||||
nt_status = auth_generate_session_info(tmp_ctx, mprEventCtx(), mprLpCtx(), server_info, &session_info);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
mprSetPropertyValue(auth, "report", mprString("Session Info generation failed"));
|
||||
mprSetPropertyValue(auth, "result", mprCreateBoolVar(false));
|
||||
|
@ -453,7 +453,7 @@ static int ejs_ldbConnect(MprVarHandle eid, int argc, char **argv)
|
||||
|
||||
dbfile = argv[0];
|
||||
|
||||
ldb = ldb_wrap_connect(mprMemCtx(), mprLpCtx(), dbfile,
|
||||
ldb = ldb_wrap_connect(mprMemCtx(), mprEventCtx(), mprLpCtx(), dbfile,
|
||||
session_info, creds,
|
||||
0, (const char **)(argv+1));
|
||||
if (ldb == NULL) {
|
||||
|
@ -70,7 +70,7 @@ static int ejs_reg_open(MprVarHandle eid, int argc, struct MprVar **argv)
|
||||
struct registry_context *rctx;
|
||||
WERROR error;
|
||||
|
||||
error = reg_open_samba(mprMemCtx(), &rctx, mprLpCtx(), NULL, NULL);
|
||||
error = reg_open_samba(mprMemCtx(), &rctx, mprEventCtx(), mprLpCtx(), NULL, NULL);
|
||||
SMB_ASSERT(W_ERROR_IS_OK(error));
|
||||
|
||||
mprSetPtrChild(reg, "registry", rctx);
|
||||
|
@ -70,7 +70,7 @@ static void sesssetup_old_send(struct auth_check_password_request *areq,
|
||||
if (!NT_STATUS_IS_OK(status)) goto failed;
|
||||
|
||||
/* This references server_info into session_info */
|
||||
status = auth_generate_session_info(req, req->smb_conn->lp_ctx,
|
||||
status = auth_generate_session_info(req, req->smb_conn->connection->event.ctx, req->smb_conn->lp_ctx,
|
||||
server_info, &session_info);
|
||||
if (!NT_STATUS_IS_OK(status)) goto failed;
|
||||
|
||||
@ -166,7 +166,8 @@ static void sesssetup_nt1_send(struct auth_check_password_request *areq,
|
||||
if (!NT_STATUS_IS_OK(status)) goto failed;
|
||||
|
||||
/* This references server_info into session_info */
|
||||
status = auth_generate_session_info(req, req->smb_conn->lp_ctx,
|
||||
status = auth_generate_session_info(req, req->smb_conn->connection->event.ctx,
|
||||
req->smb_conn->lp_ctx,
|
||||
server_info, &session_info);
|
||||
if (!NT_STATUS_IS_OK(status)) goto failed;
|
||||
|
||||
|
@ -157,6 +157,7 @@ static void smbsrv_accept(struct stream_connection *conn)
|
||||
smbsrv_management_init(smb_conn);
|
||||
|
||||
if (!NT_STATUS_IS_OK(share_get_context_by_name(smb_conn, lp_share_backend(smb_conn->lp_ctx),
|
||||
smb_conn->connection->event.ctx,
|
||||
smb_conn->lp_ctx, &(smb_conn->share_context)))) {
|
||||
smbsrv_terminate_connection(smb_conn, "share_init failed!");
|
||||
return;
|
||||
@ -206,7 +207,7 @@ static void smbsrv_preopen_ldb(struct task_server *task)
|
||||
/* yes, this looks strange. It is a hack to preload the
|
||||
schema. I'd like to share most of the ldb context with the
|
||||
child too. That will come later */
|
||||
talloc_free(samdb_connect(task, task->lp_ctx, NULL));
|
||||
talloc_free(samdb_connect(task, task->event_ctx, task->lp_ctx, NULL));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -376,7 +376,7 @@ bool torture_ldap_schema(struct torture_context *torture)
|
||||
|
||||
url = talloc_asprintf(torture, "ldap://%s/", host);
|
||||
|
||||
ldb = ldb_wrap_connect(torture, torture->lp_ctx, url,
|
||||
ldb = ldb_wrap_connect(torture, torture->ev, torture->lp_ctx, url,
|
||||
NULL,
|
||||
cmdline_credentials,
|
||||
0, NULL);
|
||||
|
@ -162,7 +162,7 @@ bool torture_ldap_uptodatevector(struct torture_context *torture)
|
||||
url = talloc_asprintf(torture, "ldap://%s/", host);
|
||||
if (!url) goto failed;
|
||||
|
||||
ldb = ldb_wrap_connect(torture, torture->lp_ctx, url,
|
||||
ldb = ldb_wrap_connect(torture, torture->ev, torture->lp_ctx, url,
|
||||
NULL,
|
||||
cmdline_credentials,
|
||||
0, NULL);
|
||||
|
@ -322,7 +322,7 @@ static NTSTATUS test_apply_schema(struct test_become_dc_state *s,
|
||||
|
||||
sam_ldb_path = talloc_asprintf(s, "%s/%s", s->targetdir, "private/sam.ldb");
|
||||
DEBUG(0,("Reopen the SAM LDB with system credentials and a already stored schema: %s\n", sam_ldb_path));
|
||||
s->ldb = ldb_wrap_connect(s, s->tctx->lp_ctx, sam_ldb_path,
|
||||
s->ldb = ldb_wrap_connect(s, s->tctx->ev, s->tctx->lp_ctx, sam_ldb_path,
|
||||
system_session(s, s->tctx->lp_ctx),
|
||||
NULL, 0, NULL);
|
||||
if (!s->ldb) {
|
||||
@ -654,7 +654,7 @@ bool torture_net_become_dc(struct torture_context *torture)
|
||||
|
||||
sam_ldb_path = talloc_asprintf(s, "%s/%s", s->targetdir, "private/sam.ldb");
|
||||
DEBUG(0,("Reopen the SAM LDB with system credentials and all replicated data: %s\n", sam_ldb_path));
|
||||
s->ldb = ldb_wrap_connect(s, s->lp_ctx, sam_ldb_path,
|
||||
s->ldb = ldb_wrap_connect(s, s->tctx->ev, s->lp_ctx, sam_ldb_path,
|
||||
system_session(s, s->lp_ctx),
|
||||
NULL, 0, NULL);
|
||||
if (!s->ldb) {
|
||||
|
@ -176,7 +176,7 @@ static bool test_ldb_speed(struct torture_context *torture, const void *_data)
|
||||
|
||||
torture_comment(torture, "Testing ldb speed for sidmap\n");
|
||||
|
||||
ldb = ldb_wrap_connect(tmp_ctx, torture->lp_ctx, "tdb://test.ldb",
|
||||
ldb = ldb_wrap_connect(tmp_ctx, torture->ev, torture->lp_ctx, "tdb://test.ldb",
|
||||
NULL, NULL, LDB_FLG_NOSYNC, NULL);
|
||||
if (!ldb) {
|
||||
unlink("./test.ldb");
|
||||
|
@ -578,6 +578,3 @@ struct torture_test *torture_tcase_add_simple_test(struct torture_tcase *tcase,
|
||||
|
||||
return test;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -158,6 +158,7 @@ static struct dom_sid *idmap_msg_get_dom_sid(TALLOC_CTX *mem_ctx,
|
||||
* \return allocated idmap_context on success, NULL on error
|
||||
*/
|
||||
struct idmap_context *idmap_init(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx)
|
||||
{
|
||||
struct idmap_context *idmap_ctx;
|
||||
@ -169,7 +170,7 @@ struct idmap_context *idmap_init(TALLOC_CTX *mem_ctx,
|
||||
|
||||
idmap_ctx->lp_ctx = lp_ctx;
|
||||
|
||||
idmap_ctx->ldb_ctx = ldb_wrap_connect(mem_ctx, lp_ctx,
|
||||
idmap_ctx->ldb_ctx = ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx,
|
||||
lp_idmap_url(lp_ctx),
|
||||
system_session(mem_ctx, lp_ctx),
|
||||
NULL, 0, NULL);
|
||||
|
@ -31,6 +31,8 @@ struct idmap_context {
|
||||
struct dom_sid *unix_users_sid;
|
||||
};
|
||||
|
||||
struct event_context;
|
||||
|
||||
#include "winbind/idmap_proto.h"
|
||||
|
||||
#endif
|
||||
|
@ -149,7 +149,7 @@ static void winbind_task_init(struct task_server *task)
|
||||
return;
|
||||
}
|
||||
|
||||
service->idmap_ctx = idmap_init(service, task->lp_ctx);
|
||||
service->idmap_ctx = idmap_init(service, task->event_ctx, task->lp_ctx);
|
||||
if (service->idmap_ctx == NULL) {
|
||||
task_server_terminate(task, "Failed to load idmap database");
|
||||
return;
|
||||
|
@ -35,9 +35,10 @@
|
||||
#include "lib/socket/netif.h"
|
||||
|
||||
static struct ldb_context *wins_config_db_connect(TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev_ctx,
|
||||
struct loadparm_context *lp_ctx)
|
||||
{
|
||||
return ldb_wrap_connect(mem_ctx, lp_ctx, private_path(mem_ctx,
|
||||
return ldb_wrap_connect(mem_ctx, ev_ctx, lp_ctx, private_path(mem_ctx,
|
||||
lp_ctx, lp_wins_config_url(lp_ctx)),
|
||||
system_session(mem_ctx, lp_ctx), NULL, 0, NULL);
|
||||
}
|
||||
@ -83,12 +84,12 @@ static NTSTATUS wreplsrv_open_winsdb(struct wreplsrv_service *service,
|
||||
owner = iface_n_ip(ifaces, 0);
|
||||
}
|
||||
|
||||
service->wins_db = winsdb_connect(service, lp_ctx, owner, WINSDB_HANDLE_CALLER_WREPL);
|
||||
service->wins_db = winsdb_connect(service, service->task->event_ctx, lp_ctx, owner, WINSDB_HANDLE_CALLER_WREPL);
|
||||
if (!service->wins_db) {
|
||||
return NT_STATUS_INTERNAL_DB_ERROR;
|
||||
}
|
||||
|
||||
service->config.ldb = wins_config_db_connect(service, lp_ctx);
|
||||
service->config.ldb = wins_config_db_connect(service, service->task->event_ctx, lp_ctx);
|
||||
if (!service->config.ldb) {
|
||||
return NT_STATUS_INTERNAL_DB_ERROR;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user