38 lines
1.2 KiB
Diff
38 lines
1.2 KiB
Diff
From a00c0ebd090f69f94ce6ba7774a9fc126d7de504 Mon Sep 17 00:00:00 2001
|
|
From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
|
|
Date: Mon, 13 May 2024 11:08:35 +1200
|
|
Subject: [PATCH] s4:dsdb:strcasecmp_with_ldb_val() avoids overflow
|
|
|
|
Reference: https://git.samba.org/?p=samba.git;a=patch;h=a00c0ebd090f69f94ce6ba7774a9fc126d7de504
|
|
|
|
In the unlikely event that strlen(str) > INT_MAX, the result could
|
|
have overflowed.
|
|
|
|
This is not a sort transitivity issue, as this is not a symmetric sort
|
|
comparison, but it would affect binary search reliability.
|
|
|
|
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
|
|
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
|
---
|
|
source4/dsdb/schema/schema_query.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/source4/dsdb/schema/schema_query.c b/source4/dsdb/schema/schema_query.c
|
|
index 96c5392..b2e937e 100644
|
|
--- a/source4/dsdb/schema/schema_query.c
|
|
+++ b/source4/dsdb/schema/schema_query.c
|
|
@@ -52,7 +52,9 @@ static int strcasecmp_with_ldb_val(const struct ldb_val *target, const char *str
|
|
}
|
|
return 1;
|
|
}
|
|
- return (target->length - len);
|
|
+ if (target->length < len) {
|
|
+ return -1;
|
|
+ }
|
|
}
|
|
return ret;
|
|
}
|
|
--
|
|
2.27.0
|
|
|