ret = s;
return ret;
case LDB_OP_GREATER:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
+ s = ldb_binary_encode(mem_ctx, tree->u.comparison.value);
if (s == NULL) return NULL;
ret = talloc_asprintf(mem_ctx, "(%s>=%s)",
- tree->u.equality.attr, s);
+ tree->u.comparison.attr, s);
talloc_free(s);
return ret;
case LDB_OP_LESS:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
+ s = ldb_binary_encode(mem_ctx, tree->u.comparison.value);
if (s == NULL) return NULL;
ret = talloc_asprintf(mem_ctx, "(%s<=%s)",
- tree->u.equality.attr, s);
+ tree->u.comparison.attr, s);
talloc_free(s);
return ret;
case LDB_OP_PRESENT:
ret = talloc_asprintf(mem_ctx, "(%s=*)", tree->u.present.attr);
return ret;
case LDB_OP_APPROX:
- s = ldb_binary_encode(mem_ctx, tree->u.equality.value);
+ s = ldb_binary_encode(mem_ctx, tree->u.comparison.value);
if (s == NULL) return NULL;
ret = talloc_asprintf(mem_ctx, "(%s~=%s)",
- tree->u.equality.attr, s);
+ tree->u.comparison.attr, s);
talloc_free(s);
return ret;
case LDB_OP_EXTENDED:
struct parse_tree_attr_replace_ctx *ctx = private_context;
switch (tree->operation) {
case LDB_OP_EQUALITY:
+ if (ldb_attr_cmp(tree->u.equality.attr, ctx->attr) == 0) {
+ tree->u.equality.attr = ctx->replace;
+ }
+ break;
case LDB_OP_GREATER:
case LDB_OP_LESS:
case LDB_OP_APPROX:
- if (ldb_attr_cmp(tree->u.equality.attr, ctx->attr) == 0) {
- tree->u.equality.attr = ctx->replace;
+ if (ldb_attr_cmp(tree->u.comparison.attr, ctx->attr) == 0) {
+ tree->u.comparison.attr = ctx->replace;
}
break;
case LDB_OP_SUBSTRING:
/* Collect a list of attributes required to match a given parse tree. */
static int ldb_parse_tree_collect_attrs(struct ldb_module *module, void *mem_ctx, const char ***attrs, const struct ldb_parse_tree *tree)
{
+ const char *attr = NULL;
const char **new_attrs;
unsigned int i;
int ret;
return ldb_parse_tree_collect_attrs(module, mem_ctx, attrs, tree->u.isnot.child);
default: /* single attribute in tree */
- new_attrs = ldb_attr_list_copy_add(mem_ctx, *attrs, tree->u.equality.attr);
+ attr = ldb_parse_tree_get_attr(tree);
+ new_attrs = ldb_attr_list_copy_add(mem_ctx, *attrs, attr);
+ if (new_attrs == NULL) {
+ return ldb_module_oom(module);
+ }
talloc_free(*attrs);
*attrs = new_attrs;
return 0;