Author: jelmer Date: 2007-12-06 21:16:40 +0000 (Thu, 06 Dec 2007) New Revision: 26318
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26318 Log: Don't rely on SAMDB functions in secrets database. Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/param/secrets.c Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/SAMBA_4_0/source/param/secrets.c =================================================================== --- branches/SAMBA_4_0/source/param/secrets.c 2007-12-06 21:10:24 UTC (rev 26317) +++ branches/SAMBA_4_0/source/param/secrets.c 2007-12-06 21:16:40 UTC (rev 26318) @@ -30,7 +30,7 @@ #include "lib/tdb/include/tdb.h" #include "lib/util/util_tdb.h" #include "lib/util/util_ldb.h" -#include "dsdb/samdb/samdb.h" +#include "librpc/gen_ndr/ndr_security.h" static struct tdb_wrap *tdb; @@ -148,6 +148,8 @@ int ldb_ret; const char *attrs[] = { "objectSid", NULL }; struct dom_sid *result = NULL; + const struct ldb_val *v; + enum ndr_err_code ndr_err; ldb = secrets_db_connect(mem_ctx, lp_ctx); if (ldb == NULL) { @@ -180,13 +182,25 @@ return NULL; } - result = samdb_result_dom_sid(mem_ctx, msgs[0], "objectSid"); - if (result == NULL) { + v = ldb_msg_find_ldb_val(msgs[0], "objectSid"); + if (v == NULL) { DEBUG(0, ("Domain object for %s does not contain a SID!\n", domain)); + return NULL; + } + result = talloc(mem_ctx, struct dom_sid); + if (result == NULL) { talloc_free(ldb); return NULL; } + ndr_err = ndr_pull_struct_blob(v, result, result, + (ndr_pull_flags_fn_t)ndr_pull_dom_sid); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + talloc_free(result); + talloc_free(ldb); + return NULL; + } + return result; }
