r8222: 0 entries are no error, unless it's a base search
authorStefan Metzmacher <metze@samba.org>
Fri, 8 Jul 2005 05:04:57 +0000 (05:04 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:19:21 +0000 (13:19 -0500)
metze

source/ldap_server/ldap_simple_ldb.c

index e8c66e80a2c8a3a29dbe8f3b2755ee5dc059ad40..4403ec8ea29bc59bd8c0b964b1767dbe190952d9 100644 (file)
@@ -47,6 +47,7 @@ static NTSTATUS sldb_Search(struct ldapsrv_partition *partition, struct ldapsrv_
        struct ldb_context *samdb;
        struct ldb_message **res = NULL;
        int i, j, y, count = 0;
+       int success_limit = 1;
        enum ldb_scope scope = LDB_SCOPE_DEFAULT;
        const char **attrs = NULL;
        const char *errstr = NULL;
@@ -67,14 +68,17 @@ static NTSTATUS sldb_Search(struct ldapsrv_partition *partition, struct ldapsrv_
                case LDAP_SEARCH_SCOPE_BASE:
                        DEBUG(10,("sldb_Search: scope: [BASE]\n"));
                        scope = LDB_SCOPE_BASE;
+                       success_limit = 1;
                        break;
                case LDAP_SEARCH_SCOPE_SINGLE:
                        DEBUG(10,("sldb_Search: scope: [ONE]\n"));
                        scope = LDB_SCOPE_ONELEVEL;
+                       success_limit = 0;
                        break;
                case LDAP_SEARCH_SCOPE_SUB:
                        DEBUG(10,("sldb_Search: scope: [SUB]\n"));
                        scope = LDB_SCOPE_SUBTREE;
+                       success_limit = 0;
                        break;
        }
 
@@ -135,7 +139,7 @@ reply:
        NT_STATUS_HAVE_NO_MEMORY(done_r);
 
        if (result == LDAP_SUCCESS) {
-               if (count > 0) {
+               if (count >= success_limit) {
                        DEBUG(10,("sldb_Search: results: [%d]\n",count));
                        result = LDAP_SUCCESS;
                        errstr = NULL;