mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s4-schema: fixed the sorting of schema attributes
another case of unsigned int subtracting breaking sorts. This one surfaced now as attributeID_id now can be larger than 2^31
This commit is contained in:
parent
ec7dc6a619
commit
0c362597c0
@ -180,13 +180,19 @@ op_error:
|
|||||||
return LDB_ERR_OPERATIONS_ERROR;
|
return LDB_ERR_OPERATIONS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int uint32_cmp(uint32_t c1, uint32_t c2)
|
||||||
|
{
|
||||||
|
if (c1 == c2) return 0;
|
||||||
|
return c1 > c2 ? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
static int dsdb_compare_class_by_lDAPDisplayName(struct dsdb_class **c1, struct dsdb_class **c2)
|
static int dsdb_compare_class_by_lDAPDisplayName(struct dsdb_class **c1, struct dsdb_class **c2)
|
||||||
{
|
{
|
||||||
return strcasecmp((*c1)->lDAPDisplayName, (*c2)->lDAPDisplayName);
|
return strcasecmp((*c1)->lDAPDisplayName, (*c2)->lDAPDisplayName);
|
||||||
}
|
}
|
||||||
static int dsdb_compare_class_by_governsID_id(struct dsdb_class **c1, struct dsdb_class **c2)
|
static int dsdb_compare_class_by_governsID_id(struct dsdb_class **c1, struct dsdb_class **c2)
|
||||||
{
|
{
|
||||||
return (*c1)->governsID_id - (*c2)->governsID_id;
|
return uint32_cmp((*c1)->governsID_id, (*c2)->governsID_id);
|
||||||
}
|
}
|
||||||
static int dsdb_compare_class_by_governsID_oid(struct dsdb_class **c1, struct dsdb_class **c2)
|
static int dsdb_compare_class_by_governsID_oid(struct dsdb_class **c1, struct dsdb_class **c2)
|
||||||
{
|
{
|
||||||
@ -203,7 +209,7 @@ static int dsdb_compare_attribute_by_lDAPDisplayName(struct dsdb_attribute **a1,
|
|||||||
}
|
}
|
||||||
static int dsdb_compare_attribute_by_attributeID_id(struct dsdb_attribute **a1, struct dsdb_attribute **a2)
|
static int dsdb_compare_attribute_by_attributeID_id(struct dsdb_attribute **a1, struct dsdb_attribute **a2)
|
||||||
{
|
{
|
||||||
return (*a1)->attributeID_id - (*a2)->attributeID_id;
|
return uint32_cmp((*a1)->attributeID_id, (*a2)->attributeID_id);
|
||||||
}
|
}
|
||||||
static int dsdb_compare_attribute_by_attributeID_oid(struct dsdb_attribute **a1, struct dsdb_attribute **a2)
|
static int dsdb_compare_attribute_by_attributeID_oid(struct dsdb_attribute **a1, struct dsdb_attribute **a2)
|
||||||
{
|
{
|
||||||
@ -211,7 +217,7 @@ static int dsdb_compare_attribute_by_attributeID_oid(struct dsdb_attribute **a1,
|
|||||||
}
|
}
|
||||||
static int dsdb_compare_attribute_by_linkID(struct dsdb_attribute **a1, struct dsdb_attribute **a2)
|
static int dsdb_compare_attribute_by_linkID(struct dsdb_attribute **a1, struct dsdb_attribute **a2)
|
||||||
{
|
{
|
||||||
return (*a1)->linkID - (*a2)->linkID;
|
return uint32_cmp((*a1)->linkID, (*a2)->linkID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user