]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9809: pcache, mdb: fix SEGV in monitor shutdown
authorHoward Chu <hyc@openldap.org>
Thu, 10 Mar 2022 15:26:04 +0000 (15:26 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 21 Mar 2022 16:48:55 +0000 (16:48 +0000)
servers/slapd/back-mdb/monitor.c
servers/slapd/overlays/pcache.c

index 7f26074f57893627a61333c9c6ee030d8cdf4e3d..fc77bc60ecc5c6326a292d37b19c5832b50ccfb8 100644 (file)
@@ -578,10 +578,11 @@ mdb_monitor_db_close( BackendDB *be )
                monitor_extra_t         *mbe;
 
                if ( mi && mi->bi_extra ) {
+                       struct berval dummy = BER_BVNULL;
                        mbe = mi->bi_extra;
                        mbe->unregister_entry_callback( &mdb->mi_monitor.mdm_ndn,
                                (monitor_callback_t *)mdb->mi_monitor.mdm_cb,
-                               NULL, 0, NULL );
+                               &dummy, 0, &dummy );
                }
 
                memset( &mdb->mi_monitor, 0, sizeof( mdb->mi_monitor ) );
index fa70d5d2dbadfabfafca5362d7e1499f29cea5c7..fcf29c60b865f4e869ae0caec8aec93f6f8bf9cb 100644 (file)
@@ -5660,15 +5660,16 @@ pcache_monitor_db_close( BackendDB *be )
        slap_overinst *on = (slap_overinst *)be->bd_info;
        cache_manager *cm = on->on_bi.bi_private;
 
-       if ( cm->monitor_cb != NULL ) {
+       if ( !BER_BVISNULL( &cm->monitor_ndn )) {
                BackendInfo             *mi = backend_info( "monitor" );
                monitor_extra_t         *mbe;
 
                if ( mi && mi->bi_extra ) {
+                       struct berval dummy = BER_BVNULL;
                        mbe = mi->bi_extra;
                        mbe->unregister_entry_callback( &cm->monitor_ndn,
                                (monitor_callback_t *)cm->monitor_cb,
-                               NULL, 0, NULL );
+                               &dummy, 0, &dummy );
                }
        }