X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fback-bdb%2Fsearch.c;h=d30d7b9f2e7b5ba1095bb67ddf756fb838ae8788;hb=8ab758c9cc4aea3ff1d8d1eb0a465c45b8fa6cd3;hp=1d7e52fb4e7c1ede5488dfc0e45bab873dd74936;hpb=a05cbba77a94875ac00c207344d819513ff6499d;p=openldap diff --git a/servers/slapd/back-bdb/search.c b/servers/slapd/back-bdb/search.c index 1d7e52fb4e..d30d7b9f2e 100644 --- a/servers/slapd/back-bdb/search.c +++ b/servers/slapd/back-bdb/search.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2011 The OpenLDAP Foundation. + * Copyright 2000-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -184,7 +184,7 @@ static int search_aliases( BDB_IDL_ZERO( aliases ); rs->sr_err = bdb_filter_candidates( op, txn, &af, aliases, curscop, visited ); - if (rs->sr_err != LDAP_SUCCESS) { + if (rs->sr_err != LDAP_SUCCESS || BDB_IDL_IS_ZERO( aliases )) { return rs->sr_err; } oldsubs[0] = 1; @@ -1253,6 +1253,8 @@ static int search_candidates( if( op->ors_deref & LDAP_DEREF_SEARCHING ) { rc = search_aliases( op, rs, e, txn, ids, scopes, stack ); + if ( BDB_IDL_IS_ZERO( ids ) && rc == LDAP_SUCCESS ) + rc = bdb_dn2idl( op, txn, &e->e_nname, BEI(e), ids, stack ); } else { rc = bdb_dn2idl( op, txn, &e->e_nname, BEI(e), ids, stack ); }