mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2024-12-23 10:15:39 +00:00
03ebc1d245
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 |
||
---|---|---|
autotools | ||
src | ||
aclocal.m4 | ||
AUTHORS | ||
ChangeLog | ||
configure | ||
configure.ac | ||
COPYING | ||
INSTALL | ||
Makefile.am | ||
Makefile.in | ||
NEWS | ||
README |
Breakpad is a set of client and server components which implement a crash-reporting system.