From 6c4b4925d39d4020b75d1b6fb920fef1a626f9ff Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 28 Jun 2016 15:38:22 -0700 Subject: [PATCH] s4: ldb: Ignore case of "range" in sscanf as we've already checked for its presence. https://bugzilla.samba.org/show_bug.cgi?id=11838 Signed-off-by: Jeremy Allison Reviewed-by: Andrew Bartlett (cherry picked from commit 1d4b20d4f3829eb3778006397990cd9fee4966a5) --- source4/dsdb/samdb/ldb_modules/ranged_results.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source4/dsdb/samdb/ldb_modules/ranged_results.c b/source4/dsdb/samdb/ldb_modules/ranged_results.c index 60d7503..13bf3a2 100644 --- a/source4/dsdb/samdb/ldb_modules/ranged_results.c +++ b/source4/dsdb/samdb/ldb_modules/ranged_results.c @@ -201,6 +201,8 @@ static int rr_search(struct ldb_module *module, struct ldb_request *req) /* Strip the range request from the attribute */ for (i = 0; req->op.search.attrs && req->op.search.attrs[i]; i++) { char *p; + size_t range_len = strlen(";range="); + new_attrs = talloc_realloc(req, new_attrs, const char *, i+2); new_attrs[i] = req->op.search.attrs[i]; new_attrs[i+1] = NULL; @@ -208,12 +210,12 @@ static int rr_search(struct ldb_module *module, struct ldb_request *req) if (!p) { continue; } - if (strncasecmp(p, ";range=", strlen(";range=")) != 0) { + if (strncasecmp(p, ";range=", range_len) != 0) { continue; } end = (unsigned int)-1; - if (sscanf(p, ";range=%u-*", &start) != 1) { - if (sscanf(p, ";range=%u-%u", &start, &end) != 2) { + if (sscanf(p + range_len, "%u-*", &start) != 1) { + if (sscanf(p + range_len, "%u-%u", &start, &end) != 2) { ldb_asprintf_errstring(ldb, "range request error: " "range request malformed"); -- 2.8.0.rc3.226.g39d4020