haproxy/src
Christopher Faulet 1e8433f594 BUG/MEDIUM: lua: Always init the lua stack before referencing the context
When a lua context is allocated, its stack must be initialized to NULL
before attaching it to its owner (task, stream or applet).  Otherwise, if
the watchdog is fired before the stack is really created, that may lead to a
segfault because we try to dump the traceback of an uninitialized lua stack.

It is easy to trigger this bug if a lua script do a blocking call while
another thread try to initialize a new lua context. Because of the global
lua lock, the init is blocked before the stack creation. Of course, it only
happens if the script is executed in the shared global context.

This patch must be backported as far as 2.0.
2021-03-24 16:36:36 +01:00
..
51d.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
acl.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
action.c MINOR: actions: add a function to suggest an action ressembling a given word 2021-03-12 14:13:21 +01:00
activity.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
applet.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
arg.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
auth.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
backend.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
base64.c REORG: include: move base64.h, errors.h and hash.h from common to to haproxy/ 2020-06-11 10:18:56 +02:00
cache.c MINOR: cache: use pool_alloc(), not pool_alloc_dirty() 2021-03-22 15:35:53 +01:00
calltrace.c BUILD: trace: include tools.h 2020-09-25 17:54:48 +02:00
cfgparse-global.c BUG/MINOR: cfgparse: use the GLOBAL not LISTEN keywords list for spell checking 2021-03-15 09:15:18 +01:00
cfgparse-listen.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
cfgparse-ssl.c BUILD: ssl: guard ecdh functions with SSL_CTX_set_tmp_ecdh macro 2021-03-24 09:52:37 +01:00
cfgparse-tcp.c MINOR: server: prepare parsing for dynamic servers 2021-03-18 15:51:12 +01:00
cfgparse-unix.c MINOR: listener: create a new struct "settings" in bind_conf 2020-09-16 20:13:13 +02:00
cfgparse.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
channel.c CLEANUP: channel: fix comment in ci_putblk. 2021-02-13 09:43:17 +01:00
check.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
chunk.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
cli.c MINOR: cli: implement experimental-mode 2021-03-18 15:37:05 +01:00
compression.c CLEANUP: compression: do not test for buffer before calling b_alloc() 2021-03-22 16:16:22 +01:00
connection.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
da.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
debug.c BUG/MEDIUM: debug/lua: Use internal hlua function to dump the lua traceback 2021-03-24 16:35:23 +01:00
dgram.c REORG: dgram: rename proto_udp to dgram 2020-06-11 10:18:59 +02:00
dict.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
dns.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
dynbuf.c MINOR: dynbuf: pass offer_buffers() the number of buffers instead of a threshold 2021-02-20 12:38:18 +01:00
eb32sctree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
eb32tree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
eb64tree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebimtree.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
ebistree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebmbtree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebpttree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebsttree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebtree.c BUG/MEDIUM: ebtree: use a byte-per-byte memcmp() to compare memory blocks 2020-06-16 11:30:33 +02:00
ev_epoll.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_evports.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_kqueue.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_poll.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_select.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
extcheck.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
fcgi-app.c MINOR: fcgi-app: use pool_alloc(), not pool_alloc_dirty() 2021-03-22 15:35:53 +01:00
fcgi.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
fd.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
filters.c CLEANUP: filters: use pool_zalloc() in flt_stream_add_filter() 2021-03-22 23:17:56 +01:00
fix.c CLEANUP: assorted typo fixes in the code and comments 2020-12-21 11:24:48 +01:00
flt_http_comp.c CLEANUP: compression: do not test for buffer before calling b_alloc() 2021-03-22 16:16:22 +01:00
flt_spoe.c CLEANUP: spoe: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:18:26 +01:00
flt_trace.c CLEANUP: Use istadv(const struct ist, const size_t) whenever possible 2021-03-03 05:07:10 +01:00
freq_ctr.c BUG/MEDIUM: freq_ctr/threads: use the global_now_ms variable 2021-03-23 09:03:37 +01:00
frontend.c CLEANUP: frontend: use pool_zalloc() in frontend_accept() 2021-03-22 23:18:54 +01:00
h1.c MEDIUM: h1: add a WebSocket key on handshake if needed 2021-01-28 16:37:14 +01:00
h1_htx.c MINOR: h1: Raise the chunk size limit up to (2^52 - 1) 2021-01-28 16:37:14 +01:00
h2.c CLEANUP: Replace for loop with only a condition by while 2021-03-05 08:28:53 +01:00
haproxy.c REORG: server: add a free server function 2021-03-18 15:37:05 +01:00
hash.c REORG: include: move base64.h, errors.h and hash.h from common to to haproxy/ 2020-06-11 10:18:56 +02:00
hlua.c BUG/MEDIUM: lua: Always init the lua stack before referencing the context 2021-03-24 16:36:36 +01:00
hlua_fcn.c BUG/MINOR: hlua: Don't strip last non-LWS char in hlua_pushstrippedstring() 2021-03-03 19:48:12 +01:00
hpack-dec.c CLEANUP: Use isttest(const struct ist) whenever possible 2021-03-03 05:07:10 +01:00
hpack-enc.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
hpack-huff.c REORG: include: move hpack*.h to haproxy/ and split hpack-tbl 2020-06-11 10:18:57 +02:00
hpack-tbl.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
http.c MINOR: http: Add HTTP 501-not-implemented error message 2021-01-21 15:21:12 +01:00
http_acl.c CLEANUP: acl: don't reference the generic pattern deletion function anymore 2020-11-05 19:27:09 +01:00
http_act.c BUG/MEDIUM: stick-tables: fix ref counter in table entry using multiple http tracksc. 2021-03-11 14:14:44 +01:00
http_ana.c CLEANUP: l7-retries: do not test the buffer before calling b_alloc() 2021-03-22 16:17:37 +01:00
http_conv.c MINOR: http-conv: Don't check if argument list is set in sample converters 2021-01-29 13:26:02 +01:00
http_fetch.c CLEANUP: Use IST_NULL whenever possible 2021-03-01 15:44:28 +01:00
http_htx.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
http_rules.c MINOR: http-rules: suggest approaching action names on mismatch 2021-03-12 14:13:21 +01:00
htx.c CLEANUP: Use istadv(const struct ist, const size_t) whenever possible 2021-03-03 05:07:10 +01:00
lb_chash.c MINOR: lb/chash: use a read lock in chash_get_server_hash() 2020-10-17 20:15:49 +02:00
lb_fas.c OPTIM: lb-first: do not take the server lock on take_conn/drop_conn 2021-02-18 10:06:45 +01:00
lb_fwlc.c OPTIM: lb-leastconn: do not unlink the server if it did not change 2021-02-18 10:06:45 +01:00
lb_fwrr.c MINOR: backend: replace the lbprm lock with an rwlock 2020-10-17 18:51:41 +02:00
lb_map.c MINOR: lb/map: use seek lock and read locks where appropriate 2020-10-17 19:04:27 +02:00
listener.c MINOR: cfgparse/bind: suggest correct spelling for unknown bind keywords 2021-03-12 14:13:21 +01:00
log.c MINOR: cfgparse/bind: suggest correct spelling for unknown bind keywords 2021-03-12 14:13:21 +01:00
lru.c MINOR: lru: new function to delete <nb> least recently used keys 2016-01-11 07:31:35 +01:00
mailers.c CLEANUP: mailers: use pool_zalloc() in enqueue_one_email_alert() 2021-03-22 23:19:13 +01:00
map.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
mqtt.c CLEANUP: assorted typo fixes in the code and comments 2020-12-21 11:24:48 +01:00
mux_fcgi.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_h1.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_h2.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_pt.c CLEANUP: task: make sure tasklet handlers always indicate their statuses 2021-03-13 11:30:19 +01:00
mworker-prog.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
mworker.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
namespace.c REORG: include: move the error reporting functions to from log.h to errors.h 2020-06-11 10:18:59 +02:00
pattern.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
payload.c MINOR: config: Deprecate and ignore tune.chksize global option 2020-11-27 10:30:23 +01:00
peers.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
pipe.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
pool.c CLEANUP: mark defproxy as const on parse tune.fail-alloc 2021-03-22 11:50:31 +01:00
proto_quic.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_sockpair.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_tcp.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_udp.c MINOR: udp: export udp_suspend_receiver() and udp_resume_receiver() 2020-12-08 18:10:18 +01:00
proto_uxdg.c BUG/MINOR: protocol: add missing support of dgram unix socket. 2021-03-18 18:30:29 +01:00
proto_uxst.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
protocol.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
proxy.c MINOR: cfgparse/proxy: also support spelling fixes on options 2021-03-15 11:14:57 +01:00
qpack-tbl.c CLEANUP: qpack: Wrong comment about the draft for QPACK static header table. 2021-01-04 12:31:28 +01:00
queue.c MINOR: lb/api: let callers of take_conn/drop_conn tell if they have the lock 2021-02-18 10:06:45 +01:00
quic_cc.c MINOR: quic: Import C source code files for QUIC protocol. 2020-12-23 11:57:26 +01:00
quic_cc_newreno.c MINOR: quic: Add traces to congestion avoidance NewReno callback. 2020-12-23 11:57:26 +01:00
quic_frame.c CLEANUP: assorted typo fixes in the code and comments 2021-01-06 16:26:50 +01:00
quic_sock.c MEDIUM: quic: Fix build. 2021-03-19 20:09:22 +01:00
quic_tls.c MINOR: quic: Update the initial salt to that of draft-29. 2020-12-23 11:57:26 +01:00
raw_sock.c MINOR: raw_sock: Add a close method. 2021-03-19 15:33:04 +01:00
regex.c OPTIM: regex: PCRE2 use JIT match when JIT optimisation occured. 2020-08-14 07:53:40 +02:00
resolvers.c CLEANUP: resolvers: use pool_zalloc() in resolv_link_resolution() 2021-03-22 23:19:28 +01:00
ring.c MINOR: ring: adds new ring_init function. 2021-02-13 09:43:17 +01:00
sample.c BUG/MINOR: sample: secure convs that accept base64 string and var name as args 2021-02-23 17:21:46 +01:00
server.c CLEANUP: assorted typo fixes in the code and comments 2021-03-20 09:28:58 +01:00
server_state.c BUG/MINOR: server-state: use the argument, not the global state 2021-03-12 14:13:07 +01:00
session.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
sha1.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
shctx.c REORG: include: split global.h into haproxy/global{,-t}.h 2020-06-11 10:18:58 +02:00
signal.c REORG: include: move the error reporting functions to from log.h to errors.h 2020-06-11 10:18:59 +02:00
sink.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
sock.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
sock_inet.c MINOR: protocol: add a ->set_port() helper to address families 2020-12-04 15:08:00 +01:00
sock_unix.c CLEANUP: protocol: remove the now unused <handler> field of proto_fam->bind() 2020-10-15 21:47:56 +02:00
ssl_ckch.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ssl_crtlist.c BUG/MINOR: ssl: Prevent disk access when using "add ssl crt-list" 2021-03-23 19:29:46 +01:00
ssl_sample.c MINOR: ssl-sample: Don't check if argument list is set in sample fetches 2021-01-29 13:26:24 +01:00
ssl_sock.c BUG/MINOR: ssl: Prevent disk access when using "add ssl crt-list" 2021-03-23 19:29:46 +01:00
ssl_utils.c CLEANUP: ssl: ssl_sock_crt2der semicolon and spaces 2020-08-07 15:38:40 +02:00
stats.c MINOR: stats: export function to allocate extra proxy counters 2021-03-18 15:52:07 +01:00
stick_table.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
stream.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
stream_interface.c CLEANUP: task: make sure tasklet handlers always indicate their statuses 2021-03-13 11:30:19 +01:00
task.c MINOR: task: give the scheduler a bit more flexibility in the runqueue size 2021-03-10 11:15:34 +01:00
tcp_act.c BUG/MEDIUM: session: NULL dereference possible when accessing the listener 2021-03-09 12:51:42 +01:00
tcp_rules.c CLEANUP: tcp-rules: Fix a typo in error messages about expect-netscaler-cip 2021-03-19 15:41:16 +01:00
tcp_sample.c MINOR: listener: prefer to retrieve the socket's settings via the receiver 2020-09-16 22:08:07 +02:00
tcpcheck.c CLEANUP: tcpcheck: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:20:03 +01:00
thread.c BUG/MINOR: threads: Fixes the number of possible cpus report for Mac. 2021-01-15 11:58:46 +01:00
time.c MINOR: time: also provide a global, monotonic global_now_ms timer 2021-03-23 09:01:37 +01:00
tools.c BUILD: tools: fix build error with new PA_O_DEFAULT_DGRAM 2021-03-23 18:38:13 +01:00
trace.c CLEANUP: Use isttest(const struct ist) whenever possible 2021-03-03 05:07:10 +01:00
uri_auth.c CLEANUP: Compare the return value of XXXcmp() functions with zero 2021-01-04 10:09:02 +01:00
vars.c CLEANUP: vars: make the error message clearer on missing arguments for set-var 2021-03-12 14:13:20 +01:00
version.c BUILD: Fix build by including haproxy/global.h 2020-06-16 23:36:04 +02:00
wdt.c CLEANUP: config: Return ERR_NONE from config callbacks instead of 0 2020-11-13 16:26:10 +01:00
wurfl.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
xprt_handshake.c MEDIUM: connections: Implement a start() method for xprt_handshake. 2021-03-19 15:33:04 +01:00
xprt_quic.c CLEANUP: quic: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:20:21 +01:00