qsort_r() (was: Re: ldb and strict overflow)

Andreas Schneider asn at samba.org
Sat Mar 24 08:15:36 UTC 2018


On Saturday, 24 March 2018 00:37:50 CET Andrew Bartlett wrote:
> On Thu, 2018-03-22 at 07:31 +0100, Andreas Schneider wrote:
> > On Wednesday, 21 March 2018 22:54:02 CET Andrew Bartlett wrote:
> > > On Wed, 2018-03-21 at 19:41 +0100, Andreas Schneider wrote:
> > > > Attached is my current version. The ldb fixes don't work. I think this
> > > > code
> > > > needs unit tests and some rethinking. I need to dive into that
> > > > tomorrow.
> > > 
> > > I wasn't able to find where the attempted ldb patches are, but I want
> > > to mention that you should be sure to check out
> > > 
> > > http://git.catalyst.net.nz/gitweb?p=samba.git;a=shortlog;h=refs/heads/ga
> > > ry-l mdb-merged
> > 
> > Thanks, but I don't thing ldb_qsort is covered :-)
> > 
> > I'm talking about this code:
> > 
> > https://git.samba.org/?p=asn/
> > samba.git;a=commitdiff;h=f64281258f2a5a4c8f85004436ce430b01c9cea7
> > 
> > The patch is HACKISH and I need to write unit tests first and then fix it.
> 
> Could we abandon it in favour of:
> 
>        void qsort_r(void *base, size_t nmemb, size_t size,
>                   int (*compar)(const void *, const void *, void *),
>                   void *arg);
> 
> on GNU and BSD systems at least?
> 
> Perhaps push it to lib/replace for the remaining systems?
> 
> Andrew Bartlett

The way the algorithm is implemented isn't really bad, just the code would 
need more tests and then some real cleanup. The libc qsort in various 
implementations have issues so it would be better to improve this algorithm 
and put it in a common place. However this function is public API, we can't 
really remove it.



	Andreas





More information about the samba-technical mailing list