]> git.sur5r.net Git - openldap/commitdiff
ITS#6400
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 24 Nov 2009 03:56:59 +0000 (03:56 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 24 Nov 2009 03:56:59 +0000 (03:56 +0000)
CHANGES
servers/slapd/overlays/accesslog.c

diff --git a/CHANGES b/CHANGES
index 1b8724bab84264f88372a640c176005dd622fbf0..431e152b57774e85a7004486a6d0848ebbf41dce 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -32,6 +32,7 @@ OpenLDAP 2.4.20 Engineering
        Fixed slapd-bdb/hdb entry cache (ITS#6360)
        Fixed slapd-ldap leak (ITS#6326)
        Fixed slapd-relay bind segfault (ITS#6337)
+       Fixed slapo-accesslog ensure CSNs are normalized (ITS#6400)
        Fixed slapo-memberof operational attr updates (ITS#6329)
        Fixed slapo-pcache entry dupe (ITS#6310)
        Fixed slapo-syncprov checkpoint conversion (ITS#6370)
index 967d56fd18ad24b1ea02647ee26b1c85f3db5009..1757a93097ef0fe7eff26ad52282ea63fb8024ef 100644 (file)
@@ -580,11 +580,12 @@ log_old_lookup( Operation *op, SlapReply *rs )
        a = attr_find( rs->sr_entry->e_attrs,
                slap_schema.si_ad_entryCSN );
        if ( a ) {
-               ber_len_t len = a->a_vals[0].bv_len;
-               if ( len > pd->csn.bv_len )
-                       len = pd->csn.bv_len;
-               if ( memcmp( a->a_vals[0].bv_val, pd->csn.bv_val, len ) > 0 ) {
-                       AC_MEMCPY( pd->csn.bv_val, a->a_vals[0].bv_val, len );
+               ber_len_t len = a->a_nvals[0].bv_len;
+               /* Paranoid len check, normalized CSNs are always the same length */
+               if ( len > LDAP_PVT_CSNSTR_BUFSIZE )
+                       len = LDAP_PVT_CSNSTR_BUFSIZE;
+               if ( memcmp( a->a_nvals[0].bv_val, pd->csn.bv_val, len ) > 0 ) {
+                       AC_MEMCPY( pd->csn.bv_val, a->a_nvals[0].bv_val, len );
                        pd->csn.bv_len = len;
                }
        }