From b746329dc37c2b27d0924bc0498ba1d395a68dae Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 23 Sep 2015 12:20:10 +0200 Subject: [PATCH] BUG/MEDIUM: proxy: do not dereference strm_li(stream) Some streams do not have a listener (eg: Lua's cosockets) so let's check for this. For now this problem cannot happen but it's definitely unsafe. --- src/proxy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/proxy.c b/src/proxy.c index b690a81fe..fb62b7c04 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1141,7 +1141,9 @@ int stream_set_backend(struct stream *s, struct proxy *be) * be more reliable to store the list of analysers that have been run, * but what we do here is OK for now. */ - s->req.analysers |= be->be_req_ana & ~strm_li(s)->analysers; + s->req.analysers |= be->be_req_ana; + if (strm_li(s)) + s->req.analysers &= ~strm_li(s)->analysers; /* If the target backend requires HTTP processing, we have to allocate * the HTTP transaction and hdr_idx if we did not have one.