From c32cbed9aeefca3f6420b21359cba99284dfc87a Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 23 Aug 2008 11:08:41 +0000 Subject: [PATCH] fix attribute list swapping when NULL (ITS#5665) --- servers/slapd/overlays/pcache.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c index 6c3af99175..d73835662f 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -1593,6 +1593,7 @@ struct search_info { Query query; QueryTemplate *qtemp; AttributeName* save_attrs; /* original attributes, saved for response */ + int swap_saved_attrs; int max; int over; int count; @@ -1984,7 +1985,7 @@ pcache_op_cleanup( Operation *op, SlapReply *rs ) { if ( rs->sr_type == REP_RESULT || op->o_abandon || rs->sr_err == SLAPD_ABANDON ) { - if ( si->save_attrs != NULL ) { + if ( si->swap_saved_attrs ) { rs->sr_attrs = si->save_attrs; op->ors_attrs = si->save_attrs; } @@ -2067,7 +2068,7 @@ pcache_response( { struct search_info *si = op->o_callback->sc_private; - if ( si->save_attrs != NULL ) { + if ( si->swap_saved_attrs ) { rs->sr_attrs = si->save_attrs; op->ors_attrs = si->save_attrs; } @@ -2164,7 +2165,7 @@ add_filter_attrs( } BER_BVZERO( &(*new_attrs)[j].an_name ); - return count; + return j; } /* NOTE: this is a quick workaround to let pcache minimally interact @@ -2416,6 +2417,7 @@ pcache_op_search( } si->head = NULL; si->tail = NULL; + si->swap_saved_attrs = 1; si->save_attrs = op->ors_attrs; op->ors_attrs = qtemp->t_attrs.attrs; -- 2.39.5