mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 14:21:00 +01:00
Along recent evolutions of the pools, we've lost the ability to reliably detect double-frees because while in the past the same pointer was being used to chain the objects in the cache and to store the pool's address, since 2.0 they're different so the pool's address is never overwritten on free() and a double-free will rarely be detected. This patch sets the caller's return address there. It can never be equal to a pool's address and will help guess what was the previous call path. It will not work on exotic architectures nor with very old compilers but these are not the environments where we're trying to get detailed bug reports, and this is not done by default anyway so we don't care about this limitation. Note that depending on the inlining status of the function, the result may differ but that's no big deal either. A test by placing a double free of an appctx inside the release handler itself successfully reported the trouble during appctx_free() and showed that the return address was in stream_int_shutw_applet() (this one calls the release handler).
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)
Description
Languages
C
98%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.2%