summaryrefslogtreecommitdiff
path: root/source4/lib/ldb-samba
diff options
context:
space:
mode:
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-08-17 20:29:11 +0200
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>2009-08-17 20:29:11 +0200
commit2cf897b10aa6b0d9565333085477e348261bfb2c (patch)
tree2d5080d7f8ff33b6607f997cc9500264b15b7ac7 /source4/lib/ldb-samba
parent87737f8946527ae96cd7fd41b6157c79d7c90964 (diff)
downloadsamba-2cf897b10aa6b0d9565333085477e348261bfb2c.tar.gz
s4: Make the int32 problem more clear - and fix another error
Diffstat (limited to 'source4/lib/ldb-samba')
-rw-r--r--source4/lib/ldb-samba/ldif_handlers.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/source4/lib/ldb-samba/ldif_handlers.c b/source4/lib/ldb-samba/ldif_handlers.c
index acf8af7917b..708643011bf 100644
--- a/source4/lib/ldb-samba/ldif_handlers.c
+++ b/source4/lib/ldb-samba/ldif_handlers.c
@@ -649,6 +649,8 @@ static int ldif_canonicalise_int32(struct ldb_context *ldb, void *mem_ctx,
const struct ldb_val *in, struct ldb_val *out)
{
char *end;
+ /* We've to use "strtoll" here to have the intended overflows.
+ * Otherwise we may get "LONG_MAX" and the conversion is wrong. */
int32_t i = (int32_t) strtoll((char *)in->data, &end, 0);
if (*end != 0) {
return -1;
@@ -665,6 +667,8 @@ static int ldif_canonicalise_int32(struct ldb_context *ldb, void *mem_ctx,
static int ldif_comparison_int32(struct ldb_context *ldb, void *mem_ctx,
const struct ldb_val *v1, const struct ldb_val *v2)
{
+ /* We've to use "strtoll" here to have the intended overflows.
+ * Otherwise we may get "LONG_MAX" and the conversion is wrong. */
return (int32_t) strtoll((char *)v1->data, NULL, 0)
- (int32_t) strtoll((char *)v2->data, NULL, 0);
}