haproxy/include/common
Willy Tarreau 3b091f80aa BUG/MINOR: buffers/threads: always clear a buffer's head before releasing it
A small race exists in buffers with "show sess all". This one wants to show
some information grabbed from the buffer (especially in HTX mode). But the
thread owning this buffer might just be releasing its area, right after a
free() or munmap() call, resulting in a head that is not seen as empty yet
though the area was released. It may then be dereferenced by "show sess all"
causing a crash. Note that in practice it only happens in debug mode with
UAF enabled, but it's tricky enough to fix it right now.

This should be backported to stable versions which support threads and a
store barrier. It's worth noting that by performing the clearing first,
b_free() and b_drop() now become two exact equivalent.
2019-08-08 08:07:45 +02:00
..
accept4.h CLEANUP: build: rename some build macros to use the USE_* ones 2019-05-22 19:47:57 +02:00
base64.h [MINOR] add encode/decode function for 30-bit integers from/to base64 2010-10-30 19:04:33 +02:00
buf.h MINOR: buffer: add a new buffer ring API to manipulate rings of buffers 2019-05-26 09:26:59 +02:00
buffer.h BUG/MINOR: buffers/threads: always clear a buffer's head before releasing it 2019-08-08 08:07:45 +02:00
cfgparse.h MINOR: cfgparse: make the process/thread parser support a maximum value 2019-01-26 13:25:14 +01:00
chunk.h BUILD: chunk: properly declare pool_head_trash as extern 2019-03-29 21:03:20 +01:00
compat.h BUILD: signals: FreeBSD has SI_LWP instead of SI_TKILL 2019-05-23 08:40:50 +02:00
compiler.h MINOR: compiler: add a new macro ALREADY_CHECKED() 2018-12-08 15:27:03 +01:00
config.h MINOR: debug: Add an option that causes random allocation failures. 2019-01-31 19:38:25 +01:00
debug.h MINOR: wdt: also consider that waiting in the thread dumper is normal 2019-07-31 19:35:31 +02:00
defaults.h MINOR: config: continue to rely on DEFAULT_MAXCONN to set the minimum maxconn 2019-03-13 10:10:49 +01:00
epoll.h CLEANUP: build: rename some build macros to use the USE_* ones 2019-05-22 19:47:57 +02:00
errors.h [MINOR] errors: provide new status codes for config parsing functions 2010-08-10 14:01:15 +02:00
h1.h BUG/MEDIUM: h1: Don't parse chunks CRLF if not enough data are available 2019-04-19 15:53:23 +02:00
h2.h CLEANUP: h2: Remove functions converting h2 requests to raw HTTP/1.1 ones 2019-07-19 09:18:27 +02:00
hash.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hathreads.h BUILD: threads: add the definition of PROTO_LOCK 2019-07-25 07:53:56 +02:00
hpack-dec.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-enc.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-huff.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-tbl.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
http-hdr.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
http.h MINOR: http: Don't store raw HTTP errors in chunks anymore 2019-07-19 09:46:23 +02:00
htx.h MINOR: htx: Slightly update htx_dump() to report better messages 2019-07-19 09:18:27 +02:00
initcall.h MINOR: initcall: Don't forget to define the __start/stop_init_##stg symbols. 2019-04-10 16:33:25 +02:00
ist.h BUILD: ist: turn the lower/upper case tables to literal on obsolete linkers 2019-05-15 16:14:04 +02:00
istbuf.h BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
memory.h BUG/MINOR: pools: don't mark the thread harmless if already isolated 2019-08-08 07:41:52 +02:00
mini-clist.h MINOR: lists: add LIST_ADDED() to check if an element belongs to a list 2019-05-13 19:14:52 +02:00
namespace.h CLEANUP: build: rename some build macros to use the USE_* ones 2019-05-22 19:47:57 +02:00
net_helper.h MINOR: net_helper: add 64-bit read/write functions 2017-09-21 06:27:08 +02:00
openssl-compat.h BUILD: ssl: BoringSSL add EVP_PKEY_base_id 2019-08-01 11:21:42 +02:00
regex.h MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
splice.h CLEANUP: build: rename some build macros to use the USE_* ones 2019-05-22 19:47:57 +02:00
standard.h MEDIUM: tools: improve time format error detection 2019-06-07 19:32:02 +02:00
syscall.h BUILD: enable build on Linux/s390x 2015-10-12 20:58:51 +02:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00
ticks.h [MEDIUM] scheduler: get rid of the 4 trees thanks and use ebtree v4.1 2009-03-21 10:25:14 +01:00
time.h CLEANUP: time: refine the test on _POSIX_TIMERS 2019-05-21 20:03:03 +02:00
tools.h [MINOR] tools: add two macros MID_RANGE and MAX_RANGE 2011-03-28 15:55:43 +02:00
uri_auth.h MINOR: stats: add ST_SHOWADMIN to pass the admin info in the regular flags 2016-03-11 17:08:05 +01:00
version.h [RELEASE] Released version 2.1-dev0 2019-06-16 21:49:47 +02:00
xref.h MEDIUM: xref: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:37 +01:00