From bc48e77cd4716a15d57f04d533af73c58a94ab32 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 12 Mar 2021 09:16:27 +0100 Subject: [PATCH] BUG/MINOR: proxy/session: Be sure to have a listener to increment its counters It is possible to have a session without a listener. It happens for applets on the client side. Thus all accesses to the listener info from the session must be guarded. It was the purpose of the commit 36119de18 ("BUG/MEDIUM: session: NULL dereference possible when accessing the listener"). However, some tests on the session's listener existence are missing in proxy_inc_* functions. This patch should fix the issues #1171, #1172, #1173, #1174 and #1175. It must be backported with the above commit as far as 1.8. (cherry picked from commit 77e376783e891fe5dda4fe4e1198cf8dff0b118d) Signed-off-by: Christopher Faulet (cherry picked from commit d57f8b2b30875e2f5c0c4452a1ec719b9c308041) Signed-off-by: Christopher Faulet (cherry picked from commit d571a771c3bc35e4d1054b85389bf39a062b26ac) Signed-off-by: Christopher Faulet --- include/proto/proxy.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/proto/proxy.h b/include/proto/proxy.h index 7f108b5..0f0411c 100644 --- a/include/proto/proxy.h +++ b/include/proto/proxy.h @@ -114,7 +114,7 @@ static inline void proxy_reset_timeouts(struct proxy *proxy) static inline void proxy_inc_fe_conn_ctr(struct listener *l, struct proxy *fe) { _HA_ATOMIC_ADD(&fe->fe_counters.cum_conn, 1); - if (l->counters) + if (l && l->counters) _HA_ATOMIC_ADD(&l->counters->cum_conn, 1); HA_ATOMIC_UPDATE_MAX(&fe->fe_counters.cps_max, update_freq_ctr(&fe->fe_conn_per_sec, 1)); @@ -125,7 +125,7 @@ static inline void proxy_inc_fe_sess_ctr(struct listener *l, struct proxy *fe) { _HA_ATOMIC_ADD(&fe->fe_counters.cum_sess, 1); - if (l->counters) + if (l && l->counters) _HA_ATOMIC_ADD(&l->counters->cum_sess, 1); HA_ATOMIC_UPDATE_MAX(&fe->fe_counters.sps_max, update_freq_ctr(&fe->fe_sess_per_sec, 1)); -- 1.7.10.4