]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/accesslog.c
check for NULL backend (ITS#6490)
[openldap] / servers / slapd / overlays / accesslog.c
index fc12834ba9ed67d33a66720df646f9459a1133f1..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;
                }
        }
@@ -1260,7 +1261,7 @@ static Entry *accesslog_entry( Operation *op, SlapReply *rs, int logop,
        }
 
        rdn.bv_len = snprintf( rdn.bv_val, sizeof( rdnbuf ), "%lu", op->o_connid );
-       if ( rdn.bv_len >= 0 || rdn.bv_len < sizeof( rdnbuf ) ) {
+       if ( rdn.bv_len < sizeof( rdnbuf ) ) {
                attr_merge_one( e, ad_reqSession, &rdn, NULL );
        } /* else? */