summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Dieter Wallnöfer <mdw@samba.org>2010-10-19 11:30:24 +0200
committerMatthias Dieter Wallnöfer <mdw@samba.org>2010-10-19 10:52:08 +0000
commitd652803c12b79315fe6a1d0410b82492908950e4 (patch)
treee31d4dede6af1d038c37ff3266104e92e68f8637
parenta6d70ddf86842db6fbd76da857cb0c70fb48aacf (diff)
downloadsamba-d652803c12b79315fe6a1d0410b82492908950e4.tar.gz
samba-d652803c12b79315fe6a1d0410b82492908950e4.tar.bz2
samba-d652803c12b79315fe6a1d0410b82492908950e4.zip
ldb:"ldb_schema_attribute_by_name_internal" - support the whole unsigned int range
Commit 8556602b048e825b35df314d6865f997823ec2bb wasn't quite right - it only restored the functionality on the positive integer range. This one however should now really support the whole unsigned range. Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org> Autobuild-Date: Tue Oct 19 10:52:08 UTC 2010 on sn-devel-104
-rw-r--r--source4/lib/ldb/common/ldb_attributes.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/source4/lib/ldb/common/ldb_attributes.c b/source4/lib/ldb/common/ldb_attributes.c
index ea6fafd21a..21a3e6eb93 100644
--- a/source4/lib/ldb/common/ldb_attributes.c
+++ b/source4/lib/ldb/common/ldb_attributes.c
@@ -123,8 +123,8 @@ static const struct ldb_schema_attribute *ldb_schema_attribute_by_name_internal(
const char *name)
{
/* for binary search we need signed variables */
- int r, i, e, b = 0;
- unsigned int u_i;
+ unsigned int i, e, b = 0;
+ int r;
const struct ldb_schema_attribute *def = &ldb_attribute_default;
/* as handlers are sorted, '*' must be the first if present */
@@ -136,20 +136,18 @@ static const struct ldb_schema_attribute *ldb_schema_attribute_by_name_internal(
/* do a binary search on the array */
e = ldb->schema.num_attributes - 1;
- while (b <= e) {
+ while ((b <= e) && (e != (unsigned int) -1)) {
i = (b + e) / 2;
- u_i = (unsigned int) i;
- r = ldb_attr_cmp(name, ldb->schema.attributes[u_i].name);
+ r = ldb_attr_cmp(name, ldb->schema.attributes[i].name);
if (r == 0) {
- return &ldb->schema.attributes[u_i];
+ return &ldb->schema.attributes[i];
}
if (r < 0) {
e = i - 1;
} else {
b = i + 1;
}
-
}
return def;