This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/3] libdw: Make srclines use a stable sort


On Thu, Dec 11, 2014 at 05:34:06PM -0800, Josh Stone wrote:
> BTW, I want to point out this change in compare_lines:
> 
> > -  return (*p1)->addr - (*p2)->addr;
> [...]
> > +  if (line1->addr != line2->addr)
> > +    return (line1->addr < line2->addr) ? -1 : 1;
> 
> Since addr is 64-bit unsigned, and comparison functions return int, it
> is possible for the difference to be so large that it wraps around.  You
> only need INT_MAX or more -- which probably doesn't happen often in ELF
> files, but it's plausible.
> 
> It might be worth auditing other qsort/tsearch comparison functions for
> similar wrapping possibilities.

I think you are right. I looked over all compare functions and two didn't
do as you suggest. The attached patch fixes those. Do that look correct?

Thanks,

Mark

Attachment: 0001-Guard-against-64bit-unsigned-wrap-around-in-int-comp.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]