From: Ondřej Kuzník Date: Wed, 8 Dec 2021 17:17:18 +0000 (+0000) Subject: ITS#9764 slapo-valsort: Maintain values in order of insertion X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ecaa025d263c6cb77ea21ccc8df3b2e4f667254;p=thirdparty%2Fopenldap.git ITS#9764 slapo-valsort: Maintain values in order of insertion --- diff --git a/servers/slapd/overlays/valsort.c b/servers/slapd/overlays/valsort.c index e47eec10a9..92b1c3990b 100644 --- a/servers/slapd/overlays/valsort.c +++ b/servers/slapd/overlays/valsort.c @@ -88,7 +88,7 @@ static Syntax *syn_numericString; static int valsort_cf_func(ConfigArgs *c) { slap_overinst *on = (slap_overinst *)c->bi; - valsort_info vitmp, *vi; + valsort_info vitmp, *vi, **vip; const char *text = NULL; int i, is_numeric; struct berval bv = BER_BVNULL; @@ -200,10 +200,14 @@ valsort_cf_func(ConfigArgs *c) { c->log, c->cr_msg, c->argv[1] ); return(1); } + + for ( vip = &on->on_bi.bi_private; *vip; vip = &(*vip)->vi_next ) + /* Get to the end */ ; + vi = ch_malloc( sizeof(valsort_info) ); *vi = vitmp; - vi->vi_next = on->on_bi.bi_private; - on->on_bi.bi_private = vi; + vi->vi_next = *vip; + *vip = vi; return 0; }