From: Olivier Houchard Date: Thu, 27 Dec 2018 14:29:53 +0000 (+0100) Subject: BUG/MAJOR: servers: Use the list api correctly to avoid crashes. X-Git-Tag: v2.0-dev1~313 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c3fa638b4c595096dd4cbed3ba7ec1bb5ff361e1;p=thirdparty%2Fhaproxy.git BUG/MAJOR: servers: Use the list api correctly to avoid crashes. In connect_server(), if we looked for an usable connection and failed to find one, srv_conn won't be NULL at the end of list_for_each_entry(), but will point to the head of a list, which is not a pointer to a struct connection, so explicitely set it to NULL. This should be backported to 1.9. --- diff --git a/src/backend.c b/src/backend.c index d52f484cb6..e82775058b 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1147,7 +1147,8 @@ int connect_server(struct stream *s) } } } - if (!srv_conn) { + if (reuse == 0) { + srv_conn = NULL; for (i = 0; i < MAX_SRV_LIST; i++) { if (!LIST_ISEMPTY(&s->sess->srv_list[i].list)) { srv_conn = LIST_ELEM(&s->sess->srv_list[i].list,