Author: idra
Date: 2005-08-26 16:12:25 +0000 (Fri, 26 Aug 2005)
New Revision: 9654

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9654

Log:

introduce the samdb_search_dn call


Modified:
   branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
   branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
   branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
   branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c


Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/samdb.c        2005-08-26 16:06:17 UTC 
(rev 9653)
+++ branches/SAMBA_4_0/source/dsdb/samdb/samdb.c        2005-08-26 16:12:25 UTC 
(rev 9654)
@@ -127,6 +127,28 @@
        return str;
 }
 
+struct ldb_dn *samdb_search_dn(struct ldb_context *sam_ldb,
+                              TALLOC_CTX *mem_ctx,
+                              const struct ldb_dn *basedn,
+                              const char *format, ...) _PRINTF_ATTRIBUTE(4,5)
+{
+       va_list ap;
+       struct ldb_dn *ret;
+       struct ldb_message **res = NULL;
+       int count;
+
+       va_start(ap, format);
+       count = gendb_search_v(sam_ldb, mem_ctx, basedn, &res, NULL, format, 
ap);
+       va_end(ap);
+
+       if (count != 1) return NULL;
+
+       ret = talloc_steal(mem_ctx, res[0]->dn);
+       talloc_free(res);
+
+       return ret;
+}
+
 /*
   search the sam for a dom_sid attribute in exactly 1 record
 */

Modified: branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c       2005-08-26 
16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c       2005-08-26 
16:12:25 UTC (rev 9654)
@@ -58,11 +58,9 @@
 {
        const char *sidstr = dom_sid_string(mem_ctx, sid);
        /* We assume that ForeignSecurityPrincipals are under the BASEDN of the 
main domain */
-       struct ldb_dn *basedn = ldb_dn_explode(mem_ctx,
-                                               
samdb_search_string(state->sam_ldb, mem_ctx,
-                                                                       
state->base_dn[SAM_DATABASE_DOMAIN],
-                                                                       "dn", 
"(&(objectClass=container)"
-                                                                               
"(cn=ForeignSecurityPrincipals))"));
+       struct ldb_dn *basedn = samdb_search_dn(state->sam_ldb, mem_ctx,
+                                               
state->base_dn[SAM_DATABASE_DOMAIN],
+                                               
"(&(objectClass=container)(cn=ForeignSecurityPrincipals))");
        struct ldb_message *msg;
        int ret;
 

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c       2005-08-26 
16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c       2005-08-26 
16:12:25 UTC (rev 9654)
@@ -261,18 +261,15 @@
 
        /* work out the builtin_dn - useful for so many calls its worth
           fetching here */
-       state->builtin_dn = ldb_dn_explode(state, 
-                                        samdb_search_string(state->sam_ldb, 
mem_ctx, NULL,
-                                                            "dn", 
"objectClass=builtinDomain"));
+       state->builtin_dn = samdb_search_dn(state->sam_ldb, mem_ctx, NULL, 
"objectClass=builtinDomain");
        if (!state->builtin_dn) {
                return NT_STATUS_NO_SUCH_DOMAIN;                
        }
 
        /* work out the system_dn - useful for so many calls its worth
           fetching here */
-       state->system_dn = ldb_dn_explode(state, 
-                                       samdb_search_string(state->sam_ldb, 
mem_ctx, state->domain_dn,
-                                                           "dn", 
"(&(objectClass=container)(cn=System))"));
+       state->system_dn = samdb_search_dn(state->sam_ldb, mem_ctx,
+                                          state->domain_dn, 
"(&(objectClass=container)(cn=System))");
        if (!state->system_dn) {
                return NT_STATUS_NO_SUCH_DOMAIN;                
        }
@@ -1304,13 +1301,9 @@
        }
        
        /* check it really exists */
-       astate->account_dn = 
-               ldb_dn_explode(mem_ctx,
-                               samdb_search_string(state->sam_ldb, astate,
-                                                   NULL, "dn", 
-                                                   
"(&(objectSid=%s)(objectClass=group))", 
-                                                   
ldap_encode_ndr_dom_sid(mem_ctx,
-                                                                           
astate->account_sid)));
+       astate->account_dn = samdb_search_string(state->sam_ldb, astate,
+                                                NULL, 
"(&(objectSid=%s)(objectClass=group))", 
+                                                
ldap_encode_ndr_dom_sid(mem_ctx, astate->account_sid));
        if (astate->account_dn == NULL) {
                talloc_free(astate);
                return NT_STATUS_NO_SUCH_USER;
@@ -1466,8 +1459,7 @@
                return NT_STATUS_NO_MEMORY;
        }
 
-       dn = samdb_search_string(state->sam_ldb, mem_ctx, NULL, "dn", 
-                                "objectSid=%s", sidstr);
+       dn = samdb_search_dn(state->sam_ldb, mem_ctx, NULL, "objectSid=%s", 
sidstr);
        if (dn == NULL) {
                return NT_STATUS_NO_SUCH_USER;
        }

Modified: branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c     2005-08-26 
16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c     2005-08-26 
16:12:25 UTC (rev 9654)
@@ -2117,11 +2117,8 @@
                 * cn=For...,cn=Builtin,dc={BASEDN}.  -- vl
                 */
 
-               basedn = ldb_dn_explode(mem_ctx,
-                                       samdb_search_string(d_state->sam_ctx,
-                                                           mem_ctx, NULL, "dn",
-                                                           
"(&(objectClass=container)"
-                                                           
"(cn=ForeignSecurityPrincipals))"));
+               basedn = samdb_search_dn(d_state->sam_ctx, mem_ctx, NULL,
+                                        
"(&(objectClass=container)(cn=ForeignSecurityPrincipals))");
 
                if (basedn == NULL) {
                        DEBUG(0, ("Failed to find DN for "

Modified: branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c   2005-08-26 
16:06:17 UTC (rev 9653)
+++ branches/SAMBA_4_0/source/rpc_server/samr/samr_password.c   2005-08-26 
16:12:25 UTC (rev 9654)
@@ -210,10 +210,9 @@
                return NT_STATUS_NO_SUCH_USER;
        }
 
-       domain_dn = ldb_dn_explode(mem_ctx,
-                                  samdb_search_string(sam_ctx, mem_ctx, NULL, 
"dn",
-                                                       "(objectSid=%s)", 
-                                                       
ldap_encode_ndr_dom_sid(mem_ctx, domain_sid)));
+       domain_dn = samdb_search_dn(sam_ctx, mem_ctx, NULL,
+                                   "(objectSid=%s)", 
+                                   ldap_encode_ndr_dom_sid(mem_ctx, 
domain_sid));
        if (!domain_dn) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
@@ -361,10 +360,9 @@
                goto failed;
        }
 
-       domain_dn = ldb_dn_explode(mem_ctx,
-                                  samdb_search_string(sam_ctx, mem_ctx, NULL, 
"dn",
-                                                       "(objectSid=%s)", 
-                                                       
ldap_encode_ndr_dom_sid(mem_ctx, domain_sid)));
+       domain_dn = samdb_search_dn(sam_ctx, mem_ctx, NULL,
+                                   "(objectSid=%s)", 
+                                   ldap_encode_ndr_dom_sid(mem_ctx, 
domain_sid));
        if (!domain_dn) {
                status = NT_STATUS_INTERNAL_DB_CORRUPTION;
                goto failed;

Reply via email to