s4-rpcserver: use TYPESAFE_QSORT() in rpc servers
authorAndrew Tridgell <tridge@samba.org>
Sat, 13 Feb 2010 02:00:55 +0000 (13:00 +1100)
committerAndrew Tridgell <tridge@samba.org>
Sat, 13 Feb 2010 11:36:12 +0000 (22:36 +1100)
source4/rpc_server/drsuapi/getncchanges.c
source4/rpc_server/lsa/dcesrv_lsa.c
source4/rpc_server/samr/dcesrv_samr.c

index 82be9b2e81199401c11edf473870d666d69b6a3e..a82962e31d3b3e02e09312396797c7e3fd1a9886 100644 (file)
@@ -31,6 +31,7 @@
 #include "../libcli/drsuapi/drsuapi.h"
 #include "libcli/security/security.h"
 #include "lib/util/binsearch.h"
+#include "lib/util/tsort.h"
 
 /*
   build a DsReplicaObjectIdentifier from a ldb msg
@@ -506,7 +507,7 @@ static int linked_attribute_compare(const struct drsuapi_DsReplicaLinkedAttribut
 /*
   sort the objects we send by tree order
  */
-static int site_res_cmp_parent_order(const struct ldb_message **m1, const struct ldb_message **m2)
+static int site_res_cmp_parent_order(struct ldb_message **m1, struct ldb_message **m2)
 {
        return ldb_dn_compare((*m2)->dn, (*m1)->dn);
 }
@@ -514,7 +515,7 @@ static int site_res_cmp_parent_order(const struct ldb_message **m1, const struct
 /*
   sort the objects we send first by uSNChanged
  */
-static int site_res_cmp_usn_order(const struct ldb_message **m1, const struct ldb_message **m2)
+static int site_res_cmp_usn_order(struct ldb_message **m1, struct ldb_message **m2)
 {
        unsigned usnchanged1, usnchanged2;
        unsigned cn1, cn2;
@@ -841,24 +842,21 @@ WERROR dcesrv_drsuapi_DsGetNCChanges(struct dcesrv_call_state *dce_call, TALLOC_
                }
 
                if (req8->replica_flags & DRSUAPI_DRS_GET_ANC) {
-                       qsort(getnc_state->site_res->msgs,
-                             getnc_state->site_res->count,
-                             sizeof(getnc_state->site_res->msgs[0]),
-                             (comparison_fn_t)site_res_cmp_parent_order);
+                       TYPESAFE_QSORT(getnc_state->site_res->msgs,
+                                      getnc_state->site_res->count,
+                                      site_res_cmp_parent_order);
                } else {
-                       qsort(getnc_state->site_res->msgs,
-                             getnc_state->site_res->count,
-                             sizeof(getnc_state->site_res->msgs[0]),
-                             (comparison_fn_t)site_res_cmp_usn_order);
+                       TYPESAFE_QSORT(getnc_state->site_res->msgs,
+                                      getnc_state->site_res->count,
+                                      site_res_cmp_usn_order);
                }
 
                getnc_state->uptodateness_vector = talloc_steal(getnc_state, req8->uptodateness_vector);
                if (getnc_state->uptodateness_vector) {
                        /* make sure its sorted */
-                       qsort(getnc_state->uptodateness_vector->cursors, 
-                             getnc_state->uptodateness_vector->count,
-                             sizeof(getnc_state->uptodateness_vector->cursors[0]),
-                             (comparison_fn_t)drsuapi_DsReplicaCursor_compare);
+                       TYPESAFE_QSORT(getnc_state->uptodateness_vector->cursors,
+                                      getnc_state->uptodateness_vector->count,
+                                      drsuapi_DsReplicaCursor_compare);
                }
        }
 
index 9709520da50ff17f8fb0a76a88bc1b1264dfc21d..d4a33c2dc291928a3f3e5330b51a2e3bcdfc4fef 100644 (file)
@@ -28,6 +28,7 @@
 #include "librpc/gen_ndr/ndr_drsblobs.h"
 #include "librpc/gen_ndr/ndr_lsa.h"
 #include "../lib/crypto/crypto.h"
+#include "lib/util/tsort.h"
 
 /*
   this type allows us to distinguish handle types
@@ -1637,8 +1638,7 @@ static NTSTATUS dcesrv_lsa_EnumTrustDom(struct dcesrv_call_state *dce_call, TALL
        }
 
        /* sort the results by name */
-       qsort(entries, count, sizeof(*entries), 
-             (comparison_fn_t)compare_DomainInfo);
+       TYPESAFE_QSORT(entries, count, compare_DomainInfo);
 
        if (*r->in.resume_handle >= count) {
                *r->out.resume_handle = -1;
@@ -1733,8 +1733,7 @@ static NTSTATUS dcesrv_lsa_EnumTrustedDomainsEx(struct dcesrv_call_state *dce_ca
        }
 
        /* sort the results by name */
-       qsort(entries, count, sizeof(*entries), 
-             (comparison_fn_t)compare_TrustDomainInfoInfoEx);
+       TYPESAFE_QSORT(entries, count, compare_TrustDomainInfoInfoEx);
 
        if (*r->in.resume_handle >= count) {
                *r->out.resume_handle = -1;
index 13955265b07e4ff32d6db720576251cc4440a6a5..76f35ddefb689bbb935534bf8a0bd76a53e06aba 100644 (file)
@@ -37,6 +37,7 @@
 #include "rpc_server/samr/proto.h"
 #include "../lib/util/util_ldb.h"
 #include "param/param.h"
+#include "lib/util/tsort.h"
 
 /* these query macros make samr_Query[User|Group|Alias]Info a bit easier to read */
 
@@ -1168,8 +1169,7 @@ static NTSTATUS dcesrv_samr_EnumDomainGroups(struct dcesrv_call_state *dce_call,
        }
 
        /* sort the results by rid */
-       qsort(entries, count, sizeof(struct samr_SamEntry), 
-             (comparison_fn_t)compare_SamEntry);
+       TYPESAFE_QSORT(entries, count, compare_SamEntry);
 
        /* find the first entry to return */
        for (first=0;
@@ -1529,8 +1529,7 @@ static NTSTATUS dcesrv_samr_EnumDomainUsers(struct dcesrv_call_state *dce_call,
        }
 
        /* sort the results by rid */
-       qsort(entries, num_filtered_entries, sizeof(struct samr_SamEntry), 
-             (comparison_fn_t)compare_SamEntry);
+       TYPESAFE_QSORT(entries, num_filtered_entries, compare_SamEntry);
 
        /* find the first entry to return */
        for (first=0;
@@ -1739,8 +1738,7 @@ static NTSTATUS dcesrv_samr_EnumDomainAliases(struct dcesrv_call_state *dce_call
        }
 
        /* sort the results by rid */
-       qsort(entries, count, sizeof(struct samr_SamEntry), 
-             (comparison_fn_t)compare_SamEntry);
+       TYPESAFE_QSORT(entries, count, compare_SamEntry);
 
        /* find the first entry to return */
        for (first=0;