We messed up smbc_readdirplus :-(

Jeremy Allison jra at samba.org
Tue Jan 8 19:50:02 UTC 2019


On Tue, Jan 08, 2019 at 06:38:52AM +0100, Andreas Schneider wrote:
> On Monday, 7 January 2019 23:20:30 CET Jeremy Allison wrote:
> > Hi Puran,
> > 
> > I'm looking at Red Hat bug:
> > 
> > https://bugzilla.redhat.com/show_bug.cgi?id=1569868
> > 
> > and realized we made a mistake in the
> > implementation of smbc_readdirplus().
> > 
> > struct libsmb_file_info
> > 
> > should have been defined as a *superset*
> > of the stat struct that smbc_stat
> > returns, but currently it is missing
> > the st_ino, st_dev, st_mode and st_blocks
> > fields in order to be a superset of struct stat.
> > 
> > We actually *have* this data as returned
> > from the SMB2_FIND_ID_BOTH_DIRECTORY_INFO
> > call when enumerating the directory, but
> > then throw it away when populating the
> > struct libsmb_file_info struct.
> > 
> > I think the best way forward is to
> > add a smbc_readdirplus_ex() call that
> > returns a new 'struct libsmb_file_info_ex'
> > struct that includes these extra fields.
> > 
> > Comments from other Samba Team members ?
> 
> I would name it smbc_readdirplus2(), than you can implement 3 if we still do 
> something stupid (which I don't expect) but who knows :-)

What I'll do is create a struct that contains
everything we can get back from SMB2_FIND_ID_BOTH_DIRECTORY_INFO,
and have it returned from smbc_readdirplus2().

Internally I'll store this struct and then translate
to a returned struct libsmb_file_info for the
return from smbc_readdirplus().



More information about the samba-technical mailing list