BUG/MEDIUM: tcp-checks: do not dereference inexisting conn_stream

Github user @jpulz reported a crash with tcp-checks in issue #184
where cs==NULL. If we enter the function with cs==NULL and check->result
!= CHK_RES_UKNOWN, we'll go directly to out_end_tcpcheck and dereference
cs. We must validate there that cs is valid (and conn at the same time
since it would be NULL as well).

This fix must be backported as far as 1.8.
This commit is contained in:
Willy Tarreau 2019-07-23 14:37:47 +02:00
parent f1204b8933
commit ef91c939f3

View File

@ -3204,7 +3204,7 @@ static int tcpcheck_main(struct check *check)
out_end_tcpcheck: out_end_tcpcheck:
/* collect possible new errors */ /* collect possible new errors */
if (conn->flags & CO_FL_ERROR || cs->flags & CS_FL_ERROR) if ((conn && conn->flags & CO_FL_ERROR) || (cs && cs->flags & CS_FL_ERROR))
chk_report_conn_err(check, 0, 0); chk_report_conn_err(check, 0, 0);
/* cleanup before leaving */ /* cleanup before leaving */