b13cc2d NSS: nss_clear_netgroup_hash_table() do not free data

1 file Authored by sbose 6 years ago, Committed by fidencio 6 years ago,
    NSS: nss_clear_netgroup_hash_table() do not free data
    
    nss_clear_netgroup_hash_table() is called during the clearEnumCache SBUS
    request, which is e.g. used during 'sss_cache -E', to remove netgroup
    data cached in the memory of the NSS responder.
    
    Currently nss_clear_netgroup_hash_table() calls
    'sss_ptr_hash_delete_all(nss_ctx->netgrent, true);' which not only
    removes all entries in the 'netgerent' hash table but frees them as
    well.
    
    The second step is not needed because nss_setnetgrent_set_timeout()
    takes care that the data is freed after a timeout. Additionally freeing
    the data in nss_clear_netgroup_hash_table() can even do harm when the
    request is received by the NSS responder while waiting for the backend
    to acquire the netgroup data. Because if the backend is done the NSS
    responder tries do use enum_ctx which might have been freed in the
    meantime.
    
    Because of this nss_clear_netgroup_hash_table() should only remove the
    data from the hash table but not free it.
    
    Related to https://pagure.io/SSSD/sssd/issue/3731
    
    Reviewed-by: Pavel Březina <pbrezina@redhat.com>
    
        
file modified
+1 -1