1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

r13747: Fix the reference count for tdbsam_open() - on an

upgrade it calls tdbsam_convert() which calls tdbsam_open()
deep inside the init_sam_from_buffer_vX call.
If the ref count hasn't been set yet then we will close
the tdbsam reference in tdbsam_getsampwsid().
smbpasswd -a was core-dumping again :-).
Jeremy
(This used to be commit 993069eb87)
This commit is contained in:
Jeremy Allison 2006-02-28 06:33:31 +00:00 committed by Gerald (Jerry) Carter
parent 51d3bbe285
commit ddf14cc286

View File

@ -817,17 +817,24 @@ static BOOL tdbsam_open( const char *name )
return False;
}
/* set the initial reference count - must be done before tdbsam_convert
as that calls tdbsam_open()/tdbsam_close(). */
ref_count = 1;
/* Check the version */
version = tdb_fetch_int32( tdbsam, TDBSAM_VERSION_STRING );
if (version == -1)
if (version == -1) {
version = 0; /* Version not found, assume version 0 */
}
/* Compare the version */
if (version > TDBSAM_VERSION) {
/* Version more recent than the latest known */
DEBUG(0, ("tdbsam_open: unknown version => %d\n", version));
tdb_close( tdbsam );
ref_count = 0;
return False;
}
@ -839,16 +846,13 @@ static BOOL tdbsam_open( const char *name )
if ( !tdbsam_convert(version) ) {
DEBUG(0, ("tdbsam_open: Error when trying to convert tdbsam [%s]\n",name));
tdb_close(tdbsam);
ref_count = 0;
return False;
}
DEBUG(3, ("TDBSAM converted successfully.\n"));
}
/* set the initial reference count */
ref_count = 1;
DEBUG(4,("tdbsam_open: successfully opened %s\n", name ));
return True;