s4:dsdb/resolve_oids: check return values in recursion
authorStefan Metzmacher <metze@samba.org>
Mon, 21 Sep 2009 03:15:38 +0000 (05:15 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 21 Sep 2009 03:51:58 +0000 (05:51 +0200)
metze

source4/dsdb/samdb/ldb_modules/resolve_oids.c

index f4d9eba17a4b1449878a7cf7354ada1c6fba9418..c9733f99a1d1ec6c9bc85be34181d8e84e7a460a 100644 (file)
@@ -98,19 +98,22 @@ static int resolve_oids_parse_tree_replace(struct ldb_context *ldb,
        const char *p1;
        const void *p2;
        struct ldb_val *valp = NULL;
+       int ret;
 
        switch (tree->operation) {
        case LDB_OP_AND:
        case LDB_OP_OR:
                for (i=0;i<tree->u.list.num_elements;i++) {
-                       resolve_oids_parse_tree_replace(ldb, schema,
+                       ret = resolve_oids_parse_tree_replace(ldb, schema,
                                                        tree->u.list.elements[i]);
+                       if (ret != LDB_SUCCESS) {
+                               return ret;
+                       }
                }
                return LDB_SUCCESS;
        case LDB_OP_NOT:
-               resolve_oids_parse_tree_replace(ldb, schema,
+               return resolve_oids_parse_tree_replace(ldb, schema,
                                                tree->u.isnot.child);
-               return LDB_SUCCESS;
        case LDB_OP_EQUALITY:
        case LDB_OP_GREATER:
        case LDB_OP_LESS: