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:
parent
51d3bbe285
commit
ddf14cc286
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user