From: Howard Chu Date: Sat, 28 Feb 2009 04:43:40 +0000 (+0000) Subject: ITS#5979 don't create reqOld attr if there was no previous value X-Git-Tag: ACLCHECK_0~773 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=85973320574d00958289009071742e196d869422;p=openldap ITS#5979 don't create reqOld attr if there was no previous value --- diff --git a/servers/slapd/overlays/accesslog.c b/servers/slapd/overlays/accesslog.c index 2ddfc1fd84..967d56fd18 100644 --- a/servers/slapd/overlays/accesslog.c +++ b/servers/slapd/overlays/accesslog.c @@ -1551,22 +1551,24 @@ static int accesslog_response(Operation *op, SlapReply *rs) { i += a->a_numvals; } } - vals = ch_malloc( (i + 1) * sizeof( struct berval ) ); - i = 0; - for ( a=old->e_attrs; a; a=a->a_next ) { - if ( a->a_vals && a->a_flags ) { - for (b=a->a_vals; !BER_BVISNULL( b ); b++,i++) { - accesslog_val2val( a->a_desc, b, 0, &vals[i] ); + if ( i ) { + vals = ch_malloc( (i + 1) * sizeof( struct berval ) ); + i = 0; + for ( a=old->e_attrs; a; a=a->a_next ) { + if ( a->a_vals && a->a_flags ) { + for (b=a->a_vals; !BER_BVISNULL( b ); b++,i++) { + accesslog_val2val( a->a_desc, b, 0, &vals[i] ); + } } } + vals[i].bv_val = NULL; + vals[i].bv_len = 0; + a = attr_alloc( ad_reqOld ); + a->a_numvals = i; + a->a_vals = vals; + a->a_nvals = vals; + last_attr->a_next = a; } - vals[i].bv_val = NULL; - vals[i].bv_len = 0; - a = attr_alloc( ad_reqOld ); - a->a_numvals = i; - a->a_vals = vals; - a->a_nvals = vals; - last_attr->a_next = a; } if ( logop == LOG_EN_MODIFY ) { break;