]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/accesslog.c
check for NULL backend (ITS#6490)
[openldap] / servers / slapd / overlays / accesslog.c
index 8e5907e96a3e084c1b958ca1bab2d263fdf14aa1..d9a576b775338d64116524bae79f6d8a82714767 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;
                }
        }