The branch, master has been updated
       via  e10fa46... LDB:tools - change counters to be unsigned
       via  24049e8... s4:lsa RPC - fix up "gendb_*" result codes
       via  a6cf892... s4:lsa RPC - Change some counters to be "unsigned" where 
needed
       via  9442a55... s4:samr RPC - Change some counters to be "unsigned" 
where needed
      from  c61c9c3... Fix for bug #7189 - Open txt files with notepad on samba 
shares creates problem.

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


- Log -----------------------------------------------------------------
commit e10fa46f3e5b3481e3c95e52f9d666eafd50ed25
Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de>
Date:   Fri Nov 6 18:35:17 2009 +0100

    LDB:tools - change counters to be unsigned
    
    In most cases we do count LDB objects which are enumerated within the 
"unsigned"
    type. Therefore no need to use "signed" counters.

commit 24049e8fc58c5216b3af8fdaf327471eaff882a1
Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de>
Date:   Sat Mar 6 11:19:04 2010 +0100

    s4:lsa RPC - fix up "gendb_*" result codes
    
    Make the resultcodes consistent: that means:
    result < 0  -> NT_STATUS_INTERNAL_DB_CORRUPTION since our DB had a critical
                   error
    result >= 0 -> depends on the function usage. I tried to let the logic 
always as
                   it was before.

commit a6cf89228f2daf5a95284ec57b9c38326e5574dc
Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de>
Date:   Sat Nov 21 19:26:02 2009 +0100

    s4:lsa RPC - Change some counters to be "unsigned" where needed
    
    The "count" size specifiers I typed "uint32_t" since they're often returned 
as
    an "uint32_t" (consider the IDL file). LDB counters need to be "signed" if 
they
    count till a limit of a "gendb*" call or "unsigned" if they count directly 
the
    number of objects.

commit 9442a5593d6de13e14e5df3b62e9fa295f42b3bd
Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de>
Date:   Sat Nov 21 19:26:02 2009 +0100

    s4:samr RPC - Change some counters to be "unsigned" where needed
    
    The "count" size specifiers I typed "uint32_t" since they're often returned 
as
    an "uint32_t" (consider the IDL file). LDB counters need to be "signed" if 
they
    count till a limit of a "gendb*" call or "unsigned" if they count directly 
the
    number of objects.

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

Summary of changes:
 source4/lib/ldb/tools/cmdline.c       |    4 +-
 source4/lib/ldb/tools/ldbadd.c        |    7 ++--
 source4/lib/ldb/tools/ldbdel.c        |    3 +-
 source4/lib/ldb/tools/ldbedit.c       |   20 +++++-----
 source4/lib/ldb/tools/ldbsearch.c     |   12 +++---
 source4/lib/ldb/tools/ldbtest.c       |   24 +++++++-----
 source4/rpc_server/lsa/dcesrv_lsa.c   |   49 +++++++++++++------------
 source4/rpc_server/lsa/lsa_lookup.c   |   63 +++++++++++++++++----------------
 source4/rpc_server/samr/dcesrv_samr.c |   23 +++++++-----
 9 files changed, 110 insertions(+), 95 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/lib/ldb/tools/cmdline.c b/source4/lib/ldb/tools/cmdline.c
index f2becb1..869d5ca 100644
--- a/source4/lib/ldb/tools/cmdline.c
+++ b/source4/lib/ldb/tools/cmdline.c
@@ -347,8 +347,8 @@ failed:
  */
 int handle_controls_reply(struct ldb_control **reply, struct ldb_control 
**request)
 {
-       int i, j;
-               int ret = 0;
+       unsigned int i, j;
+       int ret = 0;
 
        if (reply == NULL || request == NULL) return -1;
        
diff --git a/source4/lib/ldb/tools/ldbadd.c b/source4/lib/ldb/tools/ldbadd.c
index e618ab5..0dd35cc 100644
--- a/source4/lib/ldb/tools/ldbadd.c
+++ b/source4/lib/ldb/tools/ldbadd.c
@@ -35,7 +35,7 @@
 #include "tools/cmdline.h"
 #include "ldbutil.h"
 
-static int failures;
+static unsigned int failures;
 static struct ldb_cmdline *options;
 
 static void usage(void)
@@ -50,7 +50,7 @@ static void usage(void)
 /*
   add records from an opened file
 */
-static int process_file(struct ldb_context *ldb, FILE *f, int *count)
+static int process_file(struct ldb_context *ldb, FILE *f, unsigned int *count)
 {
        struct ldb_ldif *ldif;
        int ret = LDB_SUCCESS;
@@ -93,7 +93,8 @@ static int process_file(struct ldb_context *ldb, FILE *f, int 
*count)
 int main(int argc, const char **argv)
 {
        struct ldb_context *ldb;
-       int i, ret=0, count=0;
+       unsigned int i, count = 0;
+       int ret=0;
 
        ldb = ldb_init(NULL, NULL);
 
diff --git a/source4/lib/ldb/tools/ldbdel.c b/source4/lib/ldb/tools/ldbdel.c
index 1b8adf7..04884e1 100644
--- a/source4/lib/ldb/tools/ldbdel.c
+++ b/source4/lib/ldb/tools/ldbdel.c
@@ -43,7 +43,8 @@ static int dn_cmp(struct ldb_message **msg1, struct 
ldb_message **msg2)
 
 static int ldb_delete_recursive(struct ldb_context *ldb, struct ldb_dn 
*dn,struct ldb_control **req_ctrls)
 {
-       int ret, i, total=0;
+       int ret;
+       unsigned int i, total=0;
        const char *attrs[] = { NULL };
        struct ldb_result *res;
        
diff --git a/source4/lib/ldb/tools/ldbedit.c b/source4/lib/ldb/tools/ldbedit.c
index ecadf0f..4c5683c 100644
--- a/source4/lib/ldb/tools/ldbedit.c
+++ b/source4/lib/ldb/tools/ldbedit.c
@@ -88,10 +88,10 @@ static int modify_record(struct ldb_context *ldb,
 */
 static struct ldb_message *msg_find(struct ldb_context *ldb,
                                    struct ldb_message **msgs,
-                                   int count,
+                                   unsigned int count,
                                    struct ldb_dn *dn)
 {
-       int i;
+       unsigned int i;
        for (i=0;i<count;i++) {
                if (ldb_dn_compare(dn, msgs[i]->dn) == 0) {
                        return msgs[i];
@@ -104,10 +104,10 @@ static struct ldb_message *msg_find(struct ldb_context 
*ldb,
   merge the changes in msgs2 into the messages from msgs1
 */
 static int merge_edits(struct ldb_context *ldb,
-                      struct ldb_message **msgs1, int count1,
-                      struct ldb_message **msgs2, int count2)
+                      struct ldb_message **msgs1, unsigned int count1,
+                      struct ldb_message **msgs2, unsigned int count2)
 {
-       int i;
+       unsigned int i;
        struct ldb_message *msg;
        int ret = 0;
        int adds=0, modifies=0, deletes=0;
@@ -171,9 +171,9 @@ static int merge_edits(struct ldb_context *ldb,
   save a set of messages as ldif to a file
 */
 static int save_ldif(struct ldb_context *ldb, 
-                    FILE *f, struct ldb_message **msgs, int count)
+                    FILE *f, struct ldb_message **msgs, unsigned int count)
 {
-       int i;
+       unsigned int i;
 
        fprintf(f, "# editing %d records\n", count);
 
@@ -194,8 +194,8 @@ static int save_ldif(struct ldb_context *ldb,
 /*
   edit the ldb search results in msgs using the user selected editor
 */
-static int do_edit(struct ldb_context *ldb, struct ldb_message **msgs1, int 
count1,
-                  const char *editor)
+static int do_edit(struct ldb_context *ldb, struct ldb_message **msgs1,
+                  unsigned int count1, const char *editor)
 {
        int fd, ret;
        FILE *f;
@@ -203,7 +203,7 @@ static int do_edit(struct ldb_context *ldb, struct 
ldb_message **msgs1, int coun
        char *cmd;
        struct ldb_ldif *ldif;
        struct ldb_message **msgs2 = NULL;
-       int count2 = 0;
+       unsigned int count2 = 0;
 
        /* write out the original set of messages to a temporary
           file */
diff --git a/source4/lib/ldb/tools/ldbsearch.c 
b/source4/lib/ldb/tools/ldbsearch.c
index af0c12a..327a75e 100644
--- a/source4/lib/ldb/tools/ldbsearch.c
+++ b/source4/lib/ldb/tools/ldbsearch.c
@@ -54,15 +54,15 @@ struct search_context {
        struct ldb_control **req_ctrls;
 
        int sort;
-       int num_stored;
+       unsigned int num_stored;
        struct ldb_message **store;
-       int refs_stored;
+       unsigned int refs_stored;
        char **refs_store;
 
-       int entries;
-       int refs;
+       unsigned int entries;
+       unsigned int refs;
 
-       int pending;
+       unsigned int pending;
        int status;
 };
 
@@ -240,7 +240,7 @@ again:
                goto again;
 
        if (sctx->sort && (sctx->num_stored != 0 || sctx->refs != 0)) {
-               int i;
+               unsigned int i;
 
                if (sctx->num_stored) {
                        LDB_TYPESAFE_QSORT(sctx->store, sctx->num_stored, ldb, 
do_compare_msg);
diff --git a/source4/lib/ldb/tools/ldbtest.c b/source4/lib/ldb/tools/ldbtest.c
index adc6ec8..1c877c7 100644
--- a/source4/lib/ldb/tools/ldbtest.c
+++ b/source4/lib/ldb/tools/ldbtest.c
@@ -52,10 +52,10 @@ static double _end_timer(void)
 
 static void add_records(struct ldb_context *ldb,
                        struct ldb_dn *basedn,
-                       int count)
+                       unsigned int count)
 {
        struct ldb_message msg;
-       int i;
+       unsigned int i;
 
 #if 0
         if (ldb_lock(ldb, "transaction") != 0) {
@@ -141,10 +141,10 @@ static void add_records(struct ldb_context *ldb,
 
 static void modify_records(struct ldb_context *ldb,
                           struct ldb_dn *basedn,
-                          int count)
+                          unsigned int count)
 {
        struct ldb_message msg;
-       int i;
+       unsigned int i;
 
        for (i=0;i<count;i++) {
                struct ldb_message_element el[3];
@@ -194,9 +194,9 @@ static void modify_records(struct ldb_context *ldb,
 
 static void delete_records(struct ldb_context *ldb,
                           struct ldb_dn *basedn,
-                          int count)
+                          unsigned int count)
 {
-       int i;
+       unsigned int i;
 
        for (i=0;i<count;i++) {
                struct ldb_dn *dn;
@@ -217,9 +217,10 @@ static void delete_records(struct ldb_context *ldb,
        printf("\n");
 }
 
-static void search_uid(struct ldb_context *ldb, struct ldb_dn *basedn, int 
nrecords, int nsearches)
+static void search_uid(struct ldb_context *ldb, struct ldb_dn *basedn,
+                      unsigned int nrecords, unsigned int nsearches)
 {
-       int i;
+       unsigned int i;
 
        for (i=0;i<nsearches;i++) {
                int uid = (i * 700 + 17) % (nrecords * 2);
@@ -250,7 +251,8 @@ static void search_uid(struct ldb_context *ldb, struct 
ldb_dn *basedn, int nreco
        printf("\n");
 }
 
-static void start_test(struct ldb_context *ldb, int nrecords, int nsearches)
+static void start_test(struct ldb_context *ldb, unsigned int nrecords,
+                      unsigned int nsearches)
 {
        struct ldb_dn *basedn;
 
@@ -411,7 +413,9 @@ int main(int argc, const char **argv)
        printf("Testing with num-records=%d and num-searches=%d\n", 
               options->num_records, options->num_searches);
 
-       start_test(ldb, options->num_records, options->num_searches);
+       start_test(ldb,
+                  (unsigned int) options->num_records,
+                  (unsigned int) options->num_searches);
 
        start_test_index(&ldb);
 
diff --git a/source4/rpc_server/lsa/dcesrv_lsa.c 
b/source4/rpc_server/lsa/dcesrv_lsa.c
index 6a5a907..7c92a15 100644
--- a/source4/rpc_server/lsa/dcesrv_lsa.c
+++ b/source4/rpc_server/lsa/dcesrv_lsa.c
@@ -286,7 +286,7 @@ static NTSTATUS dcesrv_lsa_EnumPrivs(struct 
dcesrv_call_state *dce_call, TALLOC_
 {
        struct dcesrv_handle *h;
        struct lsa_policy_state *state;
-       int i;
+       uint32_t i;
        const char *privname;
 
        DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
@@ -682,10 +682,10 @@ static NTSTATUS dcesrv_lsa_EnumAccounts(struct 
dcesrv_call_state *dce_call, TALL
 {
        struct dcesrv_handle *h;
        struct lsa_policy_state *state;
-       int ret, i;
+       int ret;
        struct ldb_message **res;
        const char * const attrs[] = { "objectSid", NULL};
-       uint32_t count;
+       uint32_t count, i;
 
        DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
 
@@ -697,7 +697,7 @@ static NTSTATUS dcesrv_lsa_EnumAccounts(struct 
dcesrv_call_state *dce_call, TALL
        ret = gendb_search(state->pdb, mem_ctx, NULL, &res, attrs, 
                           "(&(objectSid=*)(privilege=*))");
        if (ret < 0) {
-               return NT_STATUS_NO_SUCH_USER;
+               return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
        if (*r->in.resume_handle >= ret) {
@@ -823,7 +823,7 @@ static NTSTATUS dcesrv_lsa_CreateTrustedDomain_base(struct 
dcesrv_call_state *dc
        }
 
        if (auth_struct.incoming.count) {
-               int i;
+               uint32_t i;
                struct trustAuthInOutBlob incoming;
 
                incoming.count = auth_struct.incoming.count;
@@ -862,7 +862,7 @@ static NTSTATUS dcesrv_lsa_CreateTrustedDomain_base(struct 
dcesrv_call_state *dc
        }
 
        if (auth_struct.outgoing.count) {
-               int i;
+               uint32_t i;
                struct trustAuthInOutBlob outgoing;
 
                outgoing.count = auth_struct.outgoing.count;
@@ -1046,7 +1046,7 @@ static NTSTATUS 
dcesrv_lsa_CreateTrustedDomain_base(struct dcesrv_call_state *dc
                }
 
                if (auth_struct.incoming.count) {
-                       int i;
+                       uint32_t i;
                        for (i=0; i < auth_struct.incoming.count; i++ ) {
                                if (auth_struct.incoming.current[i]->AuthType 
== TRUST_AUTH_TYPE_NT4OWF) {
                                        samdb_msg_add_hash(sam_ldb,
@@ -1626,7 +1626,7 @@ static NTSTATUS dcesrv_lsa_EnumTrustDom(struct 
dcesrv_call_state *dce_call, TALL
           resumed based on resume_key */
        count = gendb_search(policy_state->sam_ldb, mem_ctx, 
policy_state->system_dn, &domains, attrs, 
                             "objectclass=trustedDomain");
-       if (count == -1) {
+       if (count < 0) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
@@ -1719,7 +1719,7 @@ static NTSTATUS dcesrv_lsa_EnumTrustedDomainsEx(struct 
dcesrv_call_state *dce_ca
           resumed based on resume_key */
        count = gendb_search(policy_state->sam_ldb, mem_ctx, 
policy_state->system_dn, &domains, attrs, 
                             "objectclass=trustedDomain");
-       if (count == -1) {
+       if (count < 0) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
@@ -1815,7 +1815,8 @@ static NTSTATUS dcesrv_lsa_EnumPrivsAccount(struct 
dcesrv_call_state *dce_call,
 {
        struct dcesrv_handle *h;
        struct lsa_account_state *astate;
-       int ret, i;
+       int ret;
+       unsigned int i;
        struct ldb_message **res;
        const char * const attrs[] = { "privilege", NULL};
        struct ldb_message_element *el;
@@ -1843,6 +1844,9 @@ static NTSTATUS dcesrv_lsa_EnumPrivsAccount(struct 
dcesrv_call_state *dce_call,
 
        ret = gendb_search(astate->policy->pdb, mem_ctx, NULL, &res, attrs, 
                           "objectSid=%s", sidstr);
+       if (ret < 0) {
+               return NT_STATUS_INTERNAL_DB_CORRUPTION;
+       }
        if (ret != 1) {
                return NT_STATUS_OK;
        }
@@ -1882,7 +1886,8 @@ static NTSTATUS dcesrv_lsa_EnumAccountRights(struct 
dcesrv_call_state *dce_call,
 {
        struct dcesrv_handle *h;
        struct lsa_policy_state *state;
-       int ret, i;
+       int ret;
+       unsigned int i;
        struct ldb_message **res;
        const char * const attrs[] = { "privilege", NULL};
        const char *sidstr;
@@ -1902,10 +1907,7 @@ static NTSTATUS dcesrv_lsa_EnumAccountRights(struct 
dcesrv_call_state *dce_call,
        if (ret == 0) {
                return NT_STATUS_OBJECT_NAME_NOT_FOUND;
        }
-       if (ret > 1) {
-               return NT_STATUS_INTERNAL_DB_CORRUPTION;
-       }
-       if (ret == -1) {
+       if (ret != 1) {
                DEBUG(3, ("searching for account rights for SID: %s failed: 
%s", 
                          dom_sid_string(mem_ctx, r->in.sid),
                          ldb_errstring(state->pdb)));
@@ -1946,7 +1948,8 @@ static NTSTATUS dcesrv_lsa_AddRemoveAccountRights(struct 
dcesrv_call_state *dce_
        const char *sidstr, *sidndrstr;
        struct ldb_message *msg;
        struct ldb_message_element *el;
-       int i, ret;
+       int ret;
+       uint32_t i;
        struct lsa_EnumAccountRights r2;
        char *dnstr;
 
@@ -1993,7 +1996,7 @@ static NTSTATUS dcesrv_lsa_AddRemoveAccountRights(struct 
dcesrv_call_state *dce_
                }
 
                if (ldb_flag == LDB_FLAG_MOD_ADD) {
-                       int j;
+                       uint32_t j;
                        for (j=0;j<r2.out.rights->count;j++) {
                                if 
(strcasecmp_m(r2.out.rights->names[j].string, 
                                               rights->names[i].string) == 0) {
@@ -2052,7 +2055,7 @@ static NTSTATUS dcesrv_lsa_AddPrivilegesToAccount(struct 
dcesrv_call_state *dce_
        struct lsa_RightSet rights;
        struct dcesrv_handle *h;
        struct lsa_account_state *astate;
-       int i;
+       uint32_t i;
 
        DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_ACCOUNT);
 
@@ -2089,7 +2092,7 @@ static NTSTATUS 
dcesrv_lsa_RemovePrivilegesFromAccount(struct dcesrv_call_state
        struct lsa_RightSet *rights;
        struct dcesrv_handle *h;
        struct lsa_account_state *astate;
-       int i;
+       uint32_t i;
 
        DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_ACCOUNT);
 
@@ -2168,7 +2171,7 @@ static NTSTATUS dcesrv_lsa_SetQuotasForAccount(struct 
dcesrv_call_state *dce_cal
 static NTSTATUS dcesrv_lsa_GetSystemAccessAccount(struct dcesrv_call_state 
*dce_call, TALLOC_CTX *mem_ctx,
                       struct lsa_GetSystemAccessAccount *r)
 {
-       int i;
+       uint32_t i;
        NTSTATUS status;
        struct lsa_EnumPrivsAccount enumPrivs;
        struct lsa_PrivilegeSet *privs;
@@ -2292,7 +2295,7 @@ static NTSTATUS dcesrv_lsa_CreateSecret(struct 
dcesrv_call_state *dce_call, TALL
                        return NT_STATUS_OBJECT_NAME_COLLISION;
                }
                
-               if (ret == -1) {
+               if (ret < 0) {
                        DEBUG(0,("Failure searching for CN=%s: %s\n", 
                                 name2, ldb_errstring(secret_state->sam_ldb)));
                        return NT_STATUS_INTERNAL_DB_CORRUPTION;
@@ -2325,7 +2328,7 @@ static NTSTATUS dcesrv_lsa_CreateSecret(struct 
dcesrv_call_state *dce_call, TALL
                        return NT_STATUS_OBJECT_NAME_COLLISION;
                }
                
-               if (ret == -1) {
+               if (ret < 0) {
                        DEBUG(0,("Failure searching for CN=%s: %s\n", 
                                 name, ldb_errstring(secret_state->sam_ldb)));
                        return NT_STATUS_INTERNAL_DB_CORRUPTION;
@@ -2904,7 +2907,7 @@ static NTSTATUS 
dcesrv_lsa_EnumAccountsWithUserRight(struct dcesrv_call_state *d
 
        ret = gendb_search(state->pdb, mem_ctx, NULL, &res, attrs, 
                           "privilege=%s", privname);
-       if (ret == -1) {
+       if (ret < 0) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
        if (ret == 0) {
diff --git a/source4/rpc_server/lsa/lsa_lookup.c 
b/source4/rpc_server/lsa/lsa_lookup.c
index b044eea..f5f0926 100644
--- a/source4/rpc_server/lsa/lsa_lookup.c
+++ b/source4/rpc_server/lsa/lsa_lookup.c
@@ -195,7 +195,7 @@ static NTSTATUS lookup_well_known_names(TALLOC_CTX 
*mem_ctx, const char *domain,
                                        const char *name, const char 
**authority_name, 
                                        struct dom_sid **sid, uint32_t *rtype) 
 {
-       int i;
+       unsigned int i;
        for (i=0; well_known[i].sid; i++) {
                if (domain) {
                        if (strcasecmp_m(domain, well_known[i].domain) == 0
@@ -221,7 +221,7 @@ static NTSTATUS lookup_well_known_sids(TALLOC_CTX *mem_ctx,
                                       const char *sid_str, const char 
**authority_name, 
                                       const char **name, uint32_t *rtype) 
 {
-       int i;
+       unsigned int i;
        for (i=0; well_known[i].sid; i++) {
                if (strcasecmp_m(sid_str, well_known[i].sid) == 0) {
                        *authority_name = well_known[i].domain;
@@ -379,12 +379,11 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct 
tevent_context *ev_ctx,
        }
 
        ret = gendb_search_dn(state->sam_ldb, mem_ctx, domain_dn, &res, attrs);
-       if (ret == 1) {
-               domain_sid = samdb_result_dom_sid(mem_ctx, res[0], "objectSid");
-               if (domain_sid == NULL) {
-                       return NT_STATUS_INVALID_SID;
-               }
-       } else {
+       if (ret != 1) {
+               return NT_STATUS_INTERNAL_DB_CORRUPTION;
+       }
+       domain_sid = samdb_result_dom_sid(mem_ctx, res[0], "objectSid");
+       if (domain_sid == NULL) {
                return NT_STATUS_INVALID_SID;
        }
 
@@ -398,8 +397,8 @@ static NTSTATUS dcesrv_lsa_lookup_name(struct 
tevent_context *ev_ctx,
        ret = gendb_search(state->sam_ldb, mem_ctx, domain_dn, &res, attrs, 
                           "(&(sAMAccountName=%s)(objectSid=*))", 
                           ldb_binary_encode_string(mem_ctx, username));
-       if (ret == -1) {
-               return NT_STATUS_INVALID_SID;
+       if (ret < 0) {
+               return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
        for (i=0; i < ret; i++) {
@@ -441,7 +440,7 @@ static NTSTATUS dcesrv_lsa_authority_list(struct 
lsa_policy_state *state, TALLOC
                                          uint32_t *sid_index)
 {
        struct dom_sid *authority_sid;
-       int i;
+       uint32_t i;
 
        if (rtype != SID_NAME_DOMAIN) {
                authority_sid = dom_sid_dup(mem_ctx, sid);
@@ -511,28 +510,30 @@ static NTSTATUS dcesrv_lsa_lookup_sid(struct 
lsa_policy_state *state, TALLOC_CTX
                return NT_STATUS_NOT_FOUND;
        }
 
+       /* need to re-add a check for an allocated sid */
+
        ret = gendb_search(state->sam_ldb, mem_ctx, domain_dn, &res, attrs, 
                           "objectSid=%s", ldap_encode_ndr_dom_sid(mem_ctx, 
sid));
-       if (ret == 1) {
-               *name = ldb_msg_find_attr_as_string(res[0], "sAMAccountName", 
NULL);
+       if ((ret < 0) || (ret > 1)) {


-- 
Samba Shared Repository

Reply via email to