diff options
author | Günther Deschner <gd@samba.org> | 2011-10-17 22:00:45 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2012-01-18 14:46:18 +0100 |
commit | e75c436fe6a9ee44f6adc744b6269e99f4920431 (patch) | |
tree | 24c76f5195d9c7b2b615534cbe47d898924ddc2f /source3/passdb/secrets.c | |
parent | a325e7b560502ce43c78a7c6c8d692e872f262ae (diff) | |
download | samba-e75c436fe6a9ee44f6adc744b6269e99f4920431.tar.gz samba-e75c436fe6a9ee44f6adc744b6269e99f4920431.tar.bz2 samba-e75c436fe6a9ee44f6adc744b6269e99f4920431.zip |
s3-passdb: trying to decouple passdb and secrets a little.
Guenther
Autobuild-User: Günther Deschner <gd@samba.org>
Autobuild-Date: Wed Jan 18 14:46:18 CET 2012 on sn-devel-104
Diffstat (limited to 'source3/passdb/secrets.c')
-rw-r--r-- | source3/passdb/secrets.c | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c index 273765e2b3..e40095d2af 100644 --- a/source3/passdb/secrets.c +++ b/source3/passdb/secrets.c @@ -24,7 +24,6 @@ #include "includes.h" #include "system/filesys.h" -#include "passdb.h" #include "../libcli/auth/libcli_auth.h" #include "librpc/gen_ndr/ndr_secrets.h" #include "secrets.h" @@ -391,104 +390,6 @@ bool fetch_ldap_pw(char **dn, char** pw) return True; } -/** - * Get trusted domains info from secrets.tdb. - **/ - -struct list_trusted_domains_state { - uint32 num_domains; - struct trustdom_info **domains; -}; - -static int list_trusted_domain(struct db_record *rec, void *private_data) -{ - const size_t prefix_len = strlen(SECRETS_DOMTRUST_ACCT_PASS); - struct TRUSTED_DOM_PASS pass; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct trustdom_info *dom_info; - TDB_DATA key; - TDB_DATA value; - - struct list_trusted_domains_state *state = - (struct list_trusted_domains_state *)private_data; - - key = dbwrap_record_get_key(rec); - value = dbwrap_record_get_value(rec); - - if ((key.dsize < prefix_len) - || (strncmp((char *)key.dptr, SECRETS_DOMTRUST_ACCT_PASS, - prefix_len) != 0)) { - return 0; - } - - blob = data_blob_const(value.dptr, value.dsize); - - ndr_err = ndr_pull_struct_blob(&blob, talloc_tos(), &pass, - (ndr_pull_flags_fn_t)ndr_pull_TRUSTED_DOM_PASS); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - return false; - } - - if (pass.domain_sid.num_auths != 4) { - DEBUG(0, ("SID %s is not a domain sid, has %d " - "auths instead of 4\n", - sid_string_dbg(&pass.domain_sid), - pass.domain_sid.num_auths)); - return 0; - } - - if (!(dom_info = talloc(state->domains, struct trustdom_info))) { - DEBUG(0, ("talloc failed\n")); - return 0; - } - - dom_info->name = talloc_strdup(dom_info, pass.uni_name); - if (!dom_info->name) { - TALLOC_FREE(dom_info); - return 0; - } - - sid_copy(&dom_info->sid, &pass.domain_sid); - - ADD_TO_ARRAY(state->domains, struct trustdom_info *, dom_info, - &state->domains, &state->num_domains); - - if (state->domains == NULL) { - state->num_domains = 0; - return -1; - } - return 0; -} - -NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains, - struct trustdom_info ***domains) -{ - struct list_trusted_domains_state state; - - if (!secrets_init()) { - return NT_STATUS_ACCESS_DENIED; - } - - state.num_domains = 0; - - /* - * Make sure that a talloc context for the trustdom_info structs - * exists - */ - - if (!(state.domains = talloc_array( - mem_ctx, struct trustdom_info *, 1))) { - return NT_STATUS_NO_MEMORY; - } - - dbwrap_traverse_read(db_ctx, list_trusted_domain, (void *)&state, NULL); - - *num_domains = state.num_domains; - *domains = state.domains; - return NT_STATUS_OK; -} - /******************************************************************************* Store a complete AFS keyfile into secrets.tdb. *******************************************************************************/ |