diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-06-30 12:22:50 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2008-06-30 12:22:50 +1000 |
commit | 6f55742b4c485258db3b8ffe36506d8623be883c (patch) | |
tree | e9ac3416cfc690aa4a341270a8a995a8fcd1ef7a /source4 | |
parent | 71439c6283e48aaa3558b05f431f302d7e448fc5 (diff) | |
download | samba-6f55742b4c485258db3b8ffe36506d8623be883c.tar.gz samba-6f55742b4c485258db3b8ffe36506d8623be883c.tar.bz2 samba-6f55742b4c485258db3b8ffe36506d8623be883c.zip |
Rework samdb handling for 'netlogon' packets.
Don't reopen the samdb for every netlogon packet, and use the
system_session(), as we must access data not available to anonymous.
Perhaps we should consider a 'authenticated but not system' token, if
we want more control on this.
Andrew Bartlett
(This used to be commit d10c9b71ea7f2670c4ea5ec569bcb7f49ec41362)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/cldap_server/cldap_server.c | 2 | ||||
-rw-r--r-- | source4/nbt_server/dgram/netlogon.c | 12 | ||||
-rw-r--r-- | source4/nbt_server/nbt_server.c | 2 |
3 files changed, 4 insertions, 12 deletions
diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 58e9e2d89b..310fb564e0 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -187,7 +187,7 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; - cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, anonymous_session(cldapd, task->event_ctx, task->lp_ctx)); + cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, system_session(cldapd, task->lp_ctx)); if (cldapd->samctx == NULL) { task_server_terminate(task, "cldapd failed to open samdb"); return; diff --git a/source4/nbt_server/dgram/netlogon.c b/source4/nbt_server/dgram/netlogon.c index 5e263a5854..5e95270b7d 100644 --- a/source4/nbt_server/dgram/netlogon.c +++ b/source4/nbt_server/dgram/netlogon.c @@ -56,11 +56,7 @@ static void nbtd_netlogon_getdc(struct dgram_mailslot_handler *dgmslot, return; } - 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; - } + samctx = iface->nbtsrv->sam_ctx; if (!samdb_is_pdc(samctx)) { DEBUG(2, ("Not a PDC, so not processing LOGON_PRIMARY_QUERY\n")); @@ -126,11 +122,7 @@ static void nbtd_netlogon_samlogon(struct dgram_mailslot_handler *dgmslot, return; } - 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; - } + samctx = iface->nbtsrv->sam_ctx; if (netlogon->req.logon.sid_size) { sid = &netlogon->req.logon.sid; diff --git a/source4/nbt_server/nbt_server.c b/source4/nbt_server/nbt_server.c index 832bbe0103..e6ff5003bf 100644 --- a/source4/nbt_server/nbt_server.c +++ b/source4/nbt_server/nbt_server.c @@ -66,7 +66,7 @@ static void nbtd_task_init(struct task_server *task) return; } - nbtsrv->sam_ctx = samdb_connect(nbtsrv, task->event_ctx, task->lp_ctx, anonymous_session(nbtsrv, task->event_ctx, task->lp_ctx)); + nbtsrv->sam_ctx = samdb_connect(nbtsrv, task->event_ctx, task->lp_ctx, system_session(nbtsrv, task->lp_ctx)); if (nbtsrv->sam_ctx == NULL) { task_server_terminate(task, "nbtd failed to open samdb"); return; |