From 196d64c9ee05ba2f4c0fbc3526a18b0ea8cd5a44 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 29 Apr 2020 11:52:13 +0200 Subject: [PATCH] BUG/MEDIUM: http: the "http_first_req" sample fetch could crash without a steeam Since commit 5f940703b3 ("MINOR: log: Don't depends on a stream to process samples in log-format string") it has become quite obvious that a few sample fetch functions and converters were still heavily dependent on the presence of a stream without testing for it. The http_first_req sample fetch function, if called without a stream, will result in a crash. This fix adds a check for the stream's existence, and should be backported to all stable versions up to 1.6. (cherry picked from commit 79512b6d8f2f049a86b2332d4f4dc972cc33d631) Signed-off-by: Willy Tarreau --- src/http_fetch.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/http_fetch.c b/src/http_fetch.c index 723aa1f..24f6d6a 100644 --- a/src/http_fetch.c +++ b/src/http_fetch.c @@ -1189,6 +1189,9 @@ static int smp_fetch_proto_http(const struct arg *args, struct sample *smp, cons /* return a valid test if the current request is the first one on the connection */ static int smp_fetch_http_first_req(const struct arg *args, struct sample *smp, const char *kw, void *private) { + if (!smp->strm) + return 0; + smp->data.type = SMP_T_BOOL; smp->data.u.sint = !(smp->strm->txn->flags & TX_NOT_FIRST); return 1; -- 1.7.10.4