s4-ldb: fixed the parsing of references in the openldap backend
authorAndrew Tridgell <tridge@samba.org>
Fri, 2 Jul 2010 01:37:50 +0000 (11:37 +1000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 2 Jul 2010 02:49:04 +0000 (12:49 +1000)
We need to use ldap_parse_reference() not ldap_parse_result()

source4/lib/ldb/ldb_ldap/ldb_ldap.c

index 11edd3489009111b42acba58dfbcd9d078cece27..b5a089685476a016376eb6ca18102a6ff3fc88ff 100644 (file)
@@ -549,15 +549,16 @@ static bool lldb_parse_result(struct lldb_context *ac, LDAPMessage *result)
 
        case LDAP_RES_SEARCH_REFERENCE:
 
-               if (ldap_parse_result(lldb->ldap, result, &ret,
-                                       &matcheddnp, &errmsgp,
-                                       &referralsp, &serverctrlsp, 0) != LDAP_SUCCESS) {
+               ret = ldap_parse_reference(lldb->ldap, result,
+                                          &referralsp, &serverctrlsp, 0);
+               if (ret != LDAP_SUCCESS) {
+                       ldb_asprintf_errstring(ldb, "ldap reference parse error: %s : %s",
+                                              ldap_err2string(ret), errmsgp);
                        ret = LDB_ERR_OPERATIONS_ERROR;
-               }
-               if (ret != LDB_SUCCESS) {
                        break;
                }
                if (referralsp == NULL) {
+                       ldb_asprintf_errstring(ldb, "empty ldap referrals list");
                        ret = LDB_ERR_PROTOCOL_ERROR;
                        break;
                }