Don't set an iterator to a piece of free'd memory, store it first.
authorJeremy Allison <jra@samba.org>
Wed, 11 Feb 2004 22:47:12 +0000 (22:47 +0000)
committerJeremy Allison <jra@samba.org>
Wed, 11 Feb 2004 22:47:12 +0000 (22:47 +0000)
Jeremy.

source/passdb/pdb_tdb.c

index e4ef51a46d35fd22e362e14f5f3dfff8cda71963..22818b058b2c84c8ad426fb52ba617585b079708 100644 (file)
@@ -143,13 +143,14 @@ static NTSTATUS tdbsam_setsampwent(struct pdb_methods *my_methods, BOOL update)
 static void tdbsam_endsampwent(struct pdb_methods *my_methods)
 {
        struct tdbsam_privates *tdb_state = (struct tdbsam_privates *)my_methods->private_data;
-       struct pwent_list *ptr;
+       struct pwent_list *ptr, *ptr_next;
        
        close_tdb(tdb_state);
        
        /* clear out any remaining entries in the list */
        
-       for ( ptr=tdbsam_pwent_list; ptr; ptr=ptr->next ) {
+       for ( ptr=tdbsam_pwent_list; ptr; ptr = ptr_next ) {
+               ptr_next = ptr->next;
                DLIST_REMOVE( tdbsam_pwent_list, ptr );
                SAFE_FREE( ptr->key.dptr);
                SAFE_FREE( ptr );