The branch, master has been updated
       via  56f02e8 s3: Fix filtering in pdb_ads_search_users
       via  ecb6533 s3: Fix some nonempty blank lines
       via  c85607d s3: Fix a typo
      from  c399c28 s3-waf: add replacetort binary.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 56f02e8520095e3ece5787b9f87eb1f222f96344
Author: Volker Lendecke <[email protected]>
Date:   Tue Feb 22 15:30:14 2011 +0100

    s3: Fix filtering in pdb_ads_search_users
    
    Autobuild-User: Volker Lendecke <[email protected]>
    Autobuild-Date: Tue Feb 22 20:59:07 CET 2011 on sn-devel-104

commit ecb65332eabd87fa9d4befefada6a117892061ee
Author: Volker Lendecke <[email protected]>
Date:   Mon Feb 21 20:51:21 2011 +0100

    s3: Fix some nonempty blank lines

commit c85607d8ecd97c242662ca391e24269df1686fb8
Author: Volker Lendecke <[email protected]>
Date:   Mon Feb 21 12:45:14 2011 +0100

    s3: Fix a typo

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

Summary of changes:
 source3/passdb/lookup_sid.c |   20 ++++++++++----------
 source3/passdb/pdb_ads.c    |   25 +++++++++++++++++++------
 source3/printing/printing.c |    2 +-
 3 files changed, 30 insertions(+), 17 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c
index 5c6118f..0e1b8d6 100644
--- a/source3/passdb/lookup_sid.c
+++ b/source3/passdb/lookup_sid.c
@@ -4,17 +4,17 @@
    Copyright (C) Andrew Tridgell         1992-1998
    Copyright (C) Gerald (Jerry) Carter   2003
    Copyright (C) Volker Lendecke        2005
-   
+
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
@@ -261,7 +261,7 @@ bool lookup_name(TALLOC_CTX *mem_ctx,
                struct dom_sid dom_sid;
                uint32 tmp_rid;
                enum lsa_SidType domain_type;
-               
+
                if (type == SID_NAME_DOMAIN) {
                        /* Swap name and type */
                        tmp = name; name = domain; domain = tmp;
@@ -403,7 +403,7 @@ bool lookup_name_smbconf(TALLOC_CTX *mem_ctx,
                                ret_sid, ret_type)) {
                return true;
        }
-       
+
        /* Finally try with "Unix Users" or "Unix Group" */
        qualified_name = talloc_asprintf(mem_ctx, "%s\\%s",
                                flags & LOOKUP_NAME_GROUP ?
@@ -801,7 +801,7 @@ NTSTATUS lookup_sids(TALLOC_CTX *mem_ctx, int num_sids,
                                result = NT_STATUS_NO_MEMORY;
                                goto fail;
                        }
-                               
+
                        name_infos[i].rid = 0;
                        name_infos[i].type = SID_NAME_DOMAIN;
                        name_infos[i].name = NULL;
@@ -920,7 +920,7 @@ NTSTATUS lookup_sids(TALLOC_CTX *mem_ctx, int num_sids,
                        result = NT_STATUS_NO_MEMORY;
                        goto fail;
                }
-                       
+
                for (j=0; j<dom->num_idxs; j++) {
                        int idx = dom->idxs[j];
                        name_infos[idx].type = types[j];
@@ -1172,7 +1172,7 @@ static void legacy_gid_to_sid(struct dom_sid *psid, gid_t 
gid)
                /* This is a mapped group */
                goto done;
        }
-       
+
        /* This is an unmapped group */
 
        gid_to_unix_groups_sid(gid, psid);
@@ -1273,14 +1273,14 @@ static bool legacy_sid_to_gid(const struct dom_sid 
*psid, gid_t *pgid)
                        *pgid = id.gid;
                        goto done;
                }
-       
+
                /* This was ours, but it was not mapped.  Fail */
        }
 
        DEBUG(10,("LEGACY: mapping failed for sid %s\n",
                  sid_string_dbg(psid)));
        return false;
-       
+
  done:
        DEBUG(10,("LEGACY: sid %s -> gid %u\n", sid_string_dbg(psid),
                  (unsigned int)*pgid ));
diff --git a/source3/passdb/pdb_ads.c b/source3/passdb/pdb_ads.c
index f74fb12..48def7e 100644
--- a/source3/passdb/pdb_ads.c
+++ b/source3/passdb/pdb_ads.c
@@ -1985,6 +1985,7 @@ static void pdb_ads_search_end(struct pdb_search *search)
 static bool pdb_ads_search_filter(struct pdb_methods *m,
                                  struct pdb_search *search,
                                  const char *filter,
+                                 uint32_t acct_flags,
                                  struct pdb_ads_search_state **pstate)
 {
        struct pdb_ads_state *state = talloc_get_type_abort(
@@ -1999,6 +2000,7 @@ static bool pdb_ads_search_filter(struct pdb_methods *m,
        if (sstate == NULL) {
                return false;
        }
+       sstate->acct_flags = acct_flags;
 
        rc = pdb_ads_search_fmt(
                state, state->domaindn, TLDAP_SCOPE_SUB,
@@ -2036,7 +2038,19 @@ static bool pdb_ads_search_filter(struct pdb_methods *m,
                sid_peek_rid(&sid, &e->rid);
 
                if (tldap_pull_uint32(users[i], "userAccountControl", &ctrl)) {
+
                        e->acct_flags = ds_uf2acb(ctrl);
+
+                       DEBUG(10, ("pdb_ads_search_filter: Found %x, "
+                                  "filter %x\n", (int)e->acct_flags,
+                                  (int)sstate->acct_flags));
+
+
+                       if ((sstate->acct_flags != 0) &&
+                           ((sstate->acct_flags & e->acct_flags) == 0)) {
+                               continue;
+                       }
+
                        if (e->acct_flags & (ACB_WSTRUST|ACB_SVRTRUST)) {
                                e->acct_flags |= ACB_NORMAL;
                        }
@@ -2092,6 +2106,8 @@ static bool pdb_ads_search_users(struct pdb_methods *m,
        char *filter;
        bool ret;
 
+       DEBUG(10, ("pdb_ads_search_users got flags %x\n", acct_flags));
+
        if (acct_flags & ACB_NORMAL) {
                filter = talloc_asprintf(
                        talloc_tos(),
@@ -2109,12 +2125,11 @@ static bool pdb_ads_search_users(struct pdb_methods *m,
                return false;
        }
 
-       ret = pdb_ads_search_filter(m, search, filter, &sstate);
+       ret = pdb_ads_search_filter(m, search, filter, acct_flags, &sstate);
        TALLOC_FREE(filter);
        if (!ret) {
                return false;
        }
-       sstate->acct_flags = acct_flags;
        return true;
 }
 
@@ -2131,12 +2146,11 @@ static bool pdb_ads_search_groups(struct pdb_methods *m,
        if (filter == NULL) {
                return false;
        }
-       ret = pdb_ads_search_filter(m, search, filter, &sstate);
+       ret = pdb_ads_search_filter(m, search, filter, 0, &sstate);
        TALLOC_FREE(filter);
        if (!ret) {
                return false;
        }
-       sstate->acct_flags = 0;
        return true;
 }
 
@@ -2157,12 +2171,11 @@ static bool pdb_ads_search_aliases(struct pdb_methods 
*m,
        if (filter == NULL) {
                return false;
        }
-       ret = pdb_ads_search_filter(m, search, filter, &sstate);
+       ret = pdb_ads_search_filter(m, search, filter, 0, &sstate);
        TALLOC_FREE(filter);
        if (!ret) {
                return false;
        }
-       sstate->acct_flags = 0;
        return true;
 }
 
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index 1c2817d..ee0a100 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -1306,7 +1306,7 @@ done:
 }
 
 /****************************************************************************
- main work for updating the lpq cahe for a printer queue
+ main work for updating the lpq cache for a printer queue
 ****************************************************************************/
 
 static void print_queue_update_internal( struct tevent_context *ev,


-- 
Samba Shared Repository

Reply via email to