From 7e0c5d1098c31510f0e2a0c6e69647e7d88461e9 Mon Sep 17 00:00:00 2001 From: Steve Langasek Date: Wed, 9 May 2012 07:56:00 +0200 Subject: [PATCH] Fix bug 8920, null dereference Description: Avoid null dereference in initialize_password_db() When initialize_password_db() is called with reload=True, it's assumed that the free_private_data member of pdb_methods is non-null. This is not necessarily the case, as the tdb backend has no private data and therefore no free function. Check to see if we have private data that needs freed before calling. Author: Steve Langasek Bug-Ubuntu: https://bugs.launchpad.net/bugs/829221 (cherry picked from commit da5c342b6d3d3c05a8ab42bb40eb2e77d7b40ec2) --- source3/passdb/pdb_interface.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c index 36d5aaa01a7..3c11016f06f 100644 --- a/source3/passdb/pdb_interface.c +++ b/source3/passdb/pdb_interface.c @@ -184,7 +184,9 @@ static struct pdb_methods *pdb_get_methods_reload( bool reload ) static struct pdb_methods *pdb = NULL; if ( pdb && reload ) { - pdb->free_private_data( &(pdb->private_data) ); + if (pdb->free_private_data != NULL) { + pdb->free_private_data( &(pdb->private_data) ); + } if ( !NT_STATUS_IS_OK( make_pdb_method_name( &pdb, lp_passdb_backend() ) ) ) { char *msg = NULL; if (asprintf(&msg, "pdb_get_methods_reload: " -- 2.11.4.GIT