From 9118cfda44a80d90baefbf4bb905d95b351f8a5e Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sat, 11 Aug 2007 02:32:20 +0000 Subject: [PATCH] ITS#5087 fix tool_id2entry_get --- servers/slapd/back-bdb/tools.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/servers/slapd/back-bdb/tools.c b/servers/slapd/back-bdb/tools.c index 6e0d594c84..a8c07423c9 100644 --- a/servers/slapd/back-bdb/tools.c +++ b/servers/slapd/back-bdb/tools.c @@ -228,19 +228,22 @@ int bdb_tool_id2entry_get( Entry **e ) { - int rc = bdb_id2entry( be, NULL, 0, id, e ); - - if ( rc == DB_NOTFOUND && id == 0 ) { - Entry *dummy = ch_calloc( 1, sizeof(Entry) ); - struct berval gluebv = BER_BVC("glue"); - dummy->e_name.bv_val = ch_strdup( "" ); - dummy->e_nname.bv_val = ch_strdup( "" ); - attr_merge_one( dummy, slap_schema.si_ad_objectClass, &gluebv, NULL ); - attr_merge_one( dummy, slap_schema.si_ad_structuralObjectClass, - &gluebv, NULL ); - *e = dummy; - rc = LDAP_SUCCESS; + int rc; + ID nid; + + BDB_ID2DISK( id, &nid ); + key.ulen = key.size = sizeof(ID); + key.flags = DB_DBT_USERMEM; + key.data = &nid; + + rc = cursor->c_get( cursor, &key, &data, DB_SET ); + if ( rc == 0 ) { + *e = bdb_tool_entry_get( be, id ); + if ( *e == NULL ) + rc = LDAP_OTHER; } + key.data = NULL; + return rc; } -- 2.47.2