]> git.sur5r.net Git - openldap/commitdiff
Fix ITS#3571 (crash in syncrepl sessionlog), plug memleak in sessionlog
authorHoward Chu <hyc@openldap.org>
Mon, 28 Feb 2005 17:35:11 +0000 (17:35 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 28 Feb 2005 17:35:11 +0000 (17:35 +0000)
servers/slapd/sessionlog.c
servers/slapd/slap.h

index 6c414eb72606e94f0eedbf8061d2a4814926e2eb..4ecc19c57fb11b07ce39fd29e5cbe39c490918f5 100644 (file)
@@ -80,9 +80,8 @@ slap_send_session_log(
                        if ( rs->sr_err != LDAP_SUCCESS )
                                return rs->sr_err;
 
-                       if ( e.e_name.bv_val )
-                               ch_free( e.e_name.bv_val );
-                       ber_dupbv( &e.e_name, &slog_e->sl_name );
+                       e.e_name = slog_e->sl_name;
+                       e.e_nname = slog_e->sl_nname;
 
                        rs->sr_entry = &e;
                        rs->sr_attrs = uuid_attr;
@@ -112,6 +111,7 @@ slap_add_session_log(
        a = attr_find( e->e_attrs, slap_schema.si_ad_entryUUID );
        ber_dupbv( &slog_e->sl_uuid, &a->a_nvals[0] );
        ber_dupbv( &slog_e->sl_name, &e->e_name );
+       ber_dupbv( &slog_e->sl_nname, &e->e_nname );
        ber_dupbv( &slog_e->sl_csn,  &op->o_sync_csn );
        LDAP_STAILQ_INSERT_TAIL( &sop->o_sync_slog_list, slog_e, sl_link );
        sop->o_sync_slog_len++;
@@ -125,6 +125,7 @@ slap_add_session_log(
                LDAP_STAILQ_REMOVE_HEAD( &sop->o_sync_slog_list, sl_link );
                ch_free( slog_e->sl_uuid.bv_val );
                ch_free( slog_e->sl_name.bv_val );
+               ch_free( slog_e->sl_nname.bv_val );
                ch_free( slog_e->sl_csn.bv_val );
                ch_free( slog_e );
                sop->o_sync_slog_len--;
index 9136f84122fa7aa4cf6737d009d83d5c5fc497b6..f9afb1d8fba0ea9cd7645fdeaffe62bda4e84f97 100644 (file)
@@ -1940,6 +1940,7 @@ struct psid_entry {
 struct slog_entry {
        struct berval sl_uuid;
        struct berval sl_name;
+       struct berval sl_nname;
        struct berval sl_csn;
        LDAP_STAILQ_ENTRY(slog_entry) sl_link;
 };