From e9a16546c799ddc16f5fa3b643e885e560421b17 Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Tue, 12 Jan 2016 12:39:31 +1300 Subject: [PATCH] ldb: make ldb_comparison_binary() compare binary ldb_comparison_binary() preferred to compare length over actually looking at the bytes. This was no doubt an optimization but will have returned the wrong result in a great many cases. Found by Garming Sam! Trivial patch by Douglas Bagnall. Signed-off-by: Douglas Bagnall Signed-off-by: Garming Sam --- lib/ldb/common/attrib_handlers.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/ldb/common/attrib_handlers.c b/lib/ldb/common/attrib_handlers.c index 4b94d39..ab2c2d0 100644 --- a/lib/ldb/common/attrib_handlers.c +++ b/lib/ldb/common/attrib_handlers.c @@ -197,10 +197,13 @@ static int ldb_comparison_Boolean(struct ldb_context *ldb, void *mem_ctx, int ldb_comparison_binary(struct ldb_context *ldb, void *mem_ctx, const struct ldb_val *v1, const struct ldb_val *v2) { - if (v1->length != v2->length) { + int ret; + size_t len = MIN(v1->length, v2->length); + ret = memcmp(v1->data, v2->data, len); + if (ret == 0) { return v1->length - v2->length; } - return memcmp(v1->data, v2->data, v1->length); + return ret; } /* -- 1.9.1