Mirror of Google Breakpad project
Go to file
jimblandy 03ebc1d245 Breakpad processor: Fix function and public symbol lookup.
In r480, I botched the change to make the comparisons that decide
whether an address falls within a function's range safe from overflow.
The original code said:

  address >= function_base && address < function_base + function_size

which is fine unless the function abuts the end of the address space,
in which case the addition overflows and you get a false negative.

My change subtracted function_size from both sides of the latter
comparison, which is meaning-preserving in true math, and gets you:

  address >= function_base && address - function_size < function_base

This not only reads strangely, but also still overflows if
function_size is greater than address. That's rare, but I've added a
case to the unit tests that checks it.

My intent had been to replace the addition which could overflow with a
subtraction that was known not to overflow, namely:

  address >= function_base && address - function_base < function_size

This is equivalent to the original in true math, and because of the
first comparison, we know the subtraction won't underflow in MemAddr
math.

The patch includes similar fixes to the public symbol lookup code, and
to FindWindowsFrameInfo, which was the only other function affected by
r480.

a=jimblandy, r=mmentovai


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@503 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-01-28 05:17:23 +00:00
autotools Breakpad: Regenerate build files with latest versions of autotools. 2009-12-23 22:23:49 +00:00
src Breakpad processor: Fix function and public symbol lookup. 2010-01-28 05:17:23 +00:00
aclocal.m4 Breakpad: Regenerate build files with latest versions of autotools. 2009-12-23 22:23:49 +00:00
AUTHORS Make build system less annoying (#8) r=bryner 2006-08-30 20:05:05 +00:00
ChangeLog Initial import, which includes the Windows client-side dump_syms tool, and 2006-08-25 21:14:45 +00:00
configure Breakpad: Regenerate build files with latest versions of autotools. 2009-12-23 22:23:49 +00:00
configure.ac Rename Airbag to Breakpad. 2007-02-14 19:51:05 +00:00
COPYING Relicense to BSD (#29). r=bryner 2006-09-20 21:16:16 +00:00
INSTALL Add logging to minidump processor (#82). First part: logging infrastructure 2007-05-17 18:34:37 +00:00
Makefile.am Issue 49012: Breakpad Processor: Rename 'StackFrameInfo' structure to 'WindowsFrameInfo'. 2009-12-23 22:32:14 +00:00
Makefile.in Issue 49012: Breakpad Processor: Rename 'StackFrameInfo' structure to 'WindowsFrameInfo'. 2009-12-23 22:32:14 +00:00
NEWS Initial import, which includes the Windows client-side dump_syms tool, and 2006-08-25 21:14:45 +00:00
README Rename Airbag to Breakpad. 2007-02-14 19:51:05 +00:00

Breakpad is a set of client and server components which implement a
crash-reporting system.