The branch, v3-6-test has been updated
       via  1279cee s3:autorid make sure we set the mapping status correct on 
early exit
       via  d8e64e9 idmap-autorid: Slightly simplify 
idmap_autorid_get_domainrange
       via  1cc00aa idmap-autorid: Slightly simplify 
idmap_autorid_get_domainrange
       via  ea026e4 idmap-autorid: Remove an unused variable
       via  d4c4c79 idmap-autorid: Use talloc_tos() in idmap_autorid_id_to_sid
       via  4f9ddbd idmap-autorid: Remove an else branch
       via  ba1879b idmap-autorid: Remove an unused variable
       via  ee5b57f idmap-autorid: Remove an unused parameter
       via  10191a7 idmap-autorid: Use talloc_tos() in 
idmap_autorid_sids_to_unixids
       via  d596aa3 idmap-autorid: Not necessary to talloc domaincfg
       via  beafee2 idmap-autorid: Not necessary to talloc domainsid
      from  69631fe s3: Cope with 192.168.1.1/24 in smbcontrol ip-dropped

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit 1279cee650d7f05c58353fe2c361d8a01d1b9c99
Author: Christian Ambach <christian.amb...@de.ibm.com>
Date:   Fri Mar 18 14:46:47 2011 +0100

    s3:autorid make sure we set the mapping status correct on early exit
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>
    
    Autobuild-User: Volker Lendecke <vlen...@samba.org>
    Autobuild-Date: Fri Mar 18 16:30:36 CET 2011 on sn-devel-104

commit d8e64e994c3310c75714a4df6830ae87bfc40c57
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:55:58 2011 +0100

    idmap-autorid: Slightly simplify idmap_autorid_get_domainrange
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit 1cc00aa7bd52391044dd52a309909ffb57a14816
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:53:22 2011 +0100

    idmap-autorid: Slightly simplify idmap_autorid_get_domainrange
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit ea026e461a040c901b74303a97a4205ca5382fe0
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:48:44 2011 +0100

    idmap-autorid: Remove an unused variable
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit d4c4c7913f88b181bea5d1d3167d89858629efa9
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:47:41 2011 +0100

    idmap-autorid: Use talloc_tos() in idmap_autorid_id_to_sid
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit 4f9ddbd445f2f0c9b95a8782e3aa9da20a455464
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:45:02 2011 +0100

    idmap-autorid: Remove an else branch
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit ba1879b997e480756af3a143d22d5ec204386f7a
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:38:21 2011 +0100

    idmap-autorid: Remove an unused variable
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit ee5b57f76760808c05f64085e33c9094eb51a663
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:36:54 2011 +0100

    idmap-autorid: Remove an unused parameter
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit 10191a7e75159fc522503f43a2e0b6f0eae8e9c9
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:33:58 2011 +0100

    idmap-autorid: Use talloc_tos() in idmap_autorid_sids_to_unixids
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit d596aa322ba9adbe5f4c90a02a1ac6549a692fa1
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:25:40 2011 +0100

    idmap-autorid: Not necessary to talloc domaincfg
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

commit beafee2bbfff08f10df2c7ba725c29e8bb181aff
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Mar 8 21:17:37 2011 +0100

    idmap-autorid: Not necessary to talloc domainsid
    
    Signed-off-by: Christian Ambach <christian.amb...@de.ibm.com>

-----------------------------------------------------------------------

Summary of changes:
 source3/winbindd/idmap_autorid.c |  115 ++++++++++++++------------------------
 1 files changed, 43 insertions(+), 72 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/winbindd/idmap_autorid.c b/source3/winbindd/idmap_autorid.c
index f720a46..ff33a5d 100644
--- a/source3/winbindd/idmap_autorid.c
+++ b/source3/winbindd/idmap_autorid.c
@@ -54,15 +54,12 @@ static NTSTATUS idmap_autorid_get_domainrange(struct 
db_context *db,
 {
        NTSTATUS ret;
        uint32_t domainnum, hwm;
-       char *sidstr, *numstr;
+       fstring sidstr;
+       char *numstr;
        struct autorid_domain_config *cfg;
 
        cfg = (struct autorid_domain_config *)private_data;
-       sidstr = dom_sid_string(talloc_tos(), &(cfg->sid));
-
-       if (!sidstr) {
-               return NT_STATUS_NO_MEMORY;
-       }
+       dom_sid_string_buf(&(cfg->sid), sidstr, sizeof(sidstr));
 
        if (!dbwrap_fetch_uint32(db, sidstr, &domainnum)) {
                DEBUG(10, ("Acquiring new range for domain %s\n", sidstr));
@@ -107,13 +104,12 @@ static NTSTATUS idmap_autorid_get_domainrange(struct 
db_context *db,
                ret = dbwrap_trans_store_bystring(db, numstr,
                                                  string_term_tdb_data(sidstr),
                                                  TDB_INSERT);
+               talloc_free(numstr);
                if (!NT_STATUS_IS_OK(ret)) {
-                       talloc_free(numstr);
                        DEBUG(1, ("Fatal error while storing "
                                  "new domain->range assignment!\n"));
                        goto error;
                }
-               talloc_free(numstr);
                DEBUG(5, ("Acquired new range #%d for domain %s\n",
                          domainnum, sidstr));
        }
@@ -121,17 +117,14 @@ static NTSTATUS idmap_autorid_get_domainrange(struct 
db_context *db,
        DEBUG(10, ("Using range #%d for domain %s\n", domainnum, sidstr));
        cfg->domainnum = domainnum;
 
-       talloc_free(sidstr);
        return NT_STATUS_OK;
 
       error:
-       talloc_free(sidstr);
        return ret;
 
 }
 
-static NTSTATUS idmap_autorid_id_to_sid(TALLOC_CTX * memctx,
-                                       struct autorid_global_config *cfg,
+static NTSTATUS idmap_autorid_id_to_sid(struct autorid_global_config *cfg,
                                        struct id_map *map)
 {
        uint32_t range;
@@ -157,30 +150,34 @@ static NTSTATUS idmap_autorid_id_to_sid(TALLOC_CTX * 
memctx,
        /* determine the range of this uid */
        range = ((map->xid.id - cfg->minvalue) / cfg->rangesize);
 
-       keystr = talloc_asprintf(memctx, "%u", range);
+       keystr = talloc_asprintf(talloc_tos(), "%u", range);
        if (!keystr) {
                return NT_STATUS_NO_MEMORY;
        }
 
-       data = dbwrap_fetch_bystring(autorid_db, memctx, keystr);
+       data = dbwrap_fetch_bystring(autorid_db, talloc_tos(), keystr);
+       TALLOC_FREE(keystr);
 
        if (!data.dptr) {
                DEBUG(4, ("id %d belongs to range %d which does not have "
                          "domain mapping, ignoring mapping request\n",
                          map->xid.id, range));
-       } else {
-               string_to_sid(&sid, (const char *)data.dptr);
+               map->status = ID_UNKNOWN;
+               return NT_STATUS_OK;
+       }
 
-               sid_compose(map->sid, &sid,
-                           (map->xid.id - cfg->minvalue -
-                            range * cfg->rangesize));
+       string_to_sid(&sid, (const char *)data.dptr);
+       TALLOC_FREE(data.dptr);
 
-               /* We **really** should have some way of validating
-                  the SID exists and is the correct type here.  But
-                  that is a deficiency in the idmap_rid design. */
+       sid_compose(map->sid, &sid,
+                   (map->xid.id - cfg->minvalue -
+                    range * cfg->rangesize));
 
-               map->status = ID_MAPPED;
-       }
+       /* We **really** should have some way of validating
+          the SID exists and is the correct type here.  But
+          that is a deficiency in the idmap_rid design. */
+
+       map->status = ID_MAPPED;
        return NT_STATUS_OK;
 }
 
@@ -188,8 +185,7 @@ static NTSTATUS idmap_autorid_id_to_sid(TALLOC_CTX * memctx,
  Single sid to id lookup function.
 **********************************/
 
-static NTSTATUS idmap_autorid_sid_to_id(TALLOC_CTX * memctx,
-                                       struct autorid_global_config *global,
+static NTSTATUS idmap_autorid_sid_to_id(struct autorid_global_config *global,
                                        struct autorid_domain_config *domain,
                                        struct id_map *map)
 {
@@ -224,7 +220,6 @@ static NTSTATUS idmap_autorid_unixids_to_sids(struct 
idmap_domain *dom,
                                              struct id_map **ids)
 {
        struct autorid_global_config *globalcfg;
-       TALLOC_CTX *ctx;
        NTSTATUS ret;
        int i;
 
@@ -236,15 +231,9 @@ static NTSTATUS idmap_autorid_unixids_to_sids(struct 
idmap_domain *dom,
        globalcfg = talloc_get_type(dom->private_data,
                                    struct autorid_global_config);
 
-       ctx = talloc_new(dom);
-       if (!ctx) {
-               DEBUG(0, ("Out of memory!\n"));
-               return NT_STATUS_NO_MEMORY;
-       }
-
        for (i = 0; ids[i]; i++) {
 
-               ret = idmap_autorid_id_to_sid(ctx, globalcfg, ids[i]);
+               ret = idmap_autorid_id_to_sid(globalcfg, ids[i]);
 
                if ((!NT_STATUS_IS_OK(ret)) &&
                    (!NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
@@ -254,14 +243,10 @@ static NTSTATUS idmap_autorid_unixids_to_sids(struct 
idmap_domain *dom,
                        goto failure;
                }
        }
-
-       talloc_free(ctx);
        return NT_STATUS_OK;
 
       failure:
-       talloc_free(ctx);
        return ret;
-
 }
 
 /**********************************
@@ -272,29 +257,9 @@ static NTSTATUS idmap_autorid_sids_to_unixids(struct 
idmap_domain *dom,
                                              struct id_map **ids)
 {
        struct autorid_global_config *global;
-       struct autorid_domain_config *domaincfg;
-       struct dom_sid *domainsid;
-       struct winbindd_tdc_domain *domain;
-       uint32_t rid;
-       TALLOC_CTX *ctx;
        NTSTATUS ret;
        int i;
 
-       ctx = talloc_new(dom);
-       domainsid = talloc(ctx, struct dom_sid);
-       if (!ctx || !domainsid) {
-               DEBUG(0, ("Out of memory!\n"));
-               ret = NT_STATUS_NO_MEMORY;
-               goto failure;
-       }
-
-       if ((domaincfg = TALLOC_ZERO_P(ctx,
-                                      struct autorid_domain_config)) == NULL) {
-               DEBUG(0, ("Out of memory!\n"));
-               ret = NT_STATUS_NO_MEMORY;
-               goto failure;
-       }
-
        /* initialize the status to avoid surprise */
        for (i = 0; ids[i]; i++) {
                ids[i]->status = ID_UNKNOWN;
@@ -304,28 +269,37 @@ static NTSTATUS idmap_autorid_sids_to_unixids(struct 
idmap_domain *dom,
                                 struct autorid_global_config);
 
        for (i = 0; ids[i]; i++) {
-               ZERO_STRUCTP(domainsid);
-               sid_copy(domainsid, ids[i]->sid);
-               if (!sid_split_rid(domainsid, &rid)) {
+               struct winbindd_tdc_domain *domain;
+               struct autorid_domain_config domaincfg;
+               uint32_t rid;
+
+               ZERO_STRUCT(domaincfg);
+
+               sid_copy(&domaincfg.sid, ids[i]->sid);
+               if (!sid_split_rid(&domaincfg.sid, &rid)) {
                        DEBUG(4, ("Could not determine domain SID from %s, "
                                  "ignoring mapping request\n",
                                  sid_string_dbg(ids[i]->sid)));
                        continue;
                }
 
-               domain = wcache_tdc_fetch_domainbysid(ctx, domainsid);
+               /*
+                * Check if the domain is around
+                */
+               domain = wcache_tdc_fetch_domainbysid(talloc_tos(),
+                                                     &domaincfg.sid);
                if (domain == NULL) {
                        DEBUG(10, ("Ignoring unknown domain sid %s\n",
-                                  sid_string_dbg(domainsid)));
+                                  sid_string_dbg(&domaincfg.sid)));
                        continue;
                }
+               TALLOC_FREE(domain);
 
-               ZERO_STRUCTP(domaincfg);
-               domaincfg->sid = domain->sid;
-               domaincfg->globalcfg = global;
+               domaincfg.globalcfg = global;
 
-               ret = dbwrap_trans_do(autorid_db, idmap_autorid_get_domainrange,
-                                     domaincfg);
+               ret = dbwrap_trans_do(autorid_db,
+                                     idmap_autorid_get_domainrange,
+                                     &domaincfg);
 
                if (!NT_STATUS_IS_OK(ret)) {
                        DEBUG(3, ("Could not determine range for domain, "
@@ -333,7 +307,7 @@ static NTSTATUS idmap_autorid_sids_to_unixids(struct 
idmap_domain *dom,
                        goto failure;
                }
 
-               ret = idmap_autorid_sid_to_id(ctx, global, domaincfg, ids[i]);
+               ret = idmap_autorid_sid_to_id(global, &domaincfg, ids[i]);
 
                if ((!NT_STATUS_IS_OK(ret)) &&
                    (!NT_STATUS_EQUAL(ret, NT_STATUS_NONE_MAPPED))) {
@@ -343,12 +317,9 @@ static NTSTATUS idmap_autorid_sids_to_unixids(struct 
idmap_domain *dom,
                        goto failure;
                }
        }
-
-       talloc_free(ctx);
        return NT_STATUS_OK;
 
       failure:
-       talloc_free(ctx);
        return ret;
 
 }


-- 
Samba Shared Repository

Reply via email to