url2sa() mistakenly uses "addr" as a reference. This causes a segfault when option http_proxy or url_ip are used.
This bug was introduced in haproxy 1.5 and doesn't need to be backported. --- src/standard.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/standard.c b/src/standard.c index 287931a..76031e9 100644 --- a/src/standard.c +++ b/src/standard.c @@ -906,12 +906,12 @@ int url2sa(const char *url, int ulen, struct sockaddr_storage *addr) * be warned this can slow down global daemon performances * while handling lagging dns responses. */ - ret = url2ipv4(curr, &((struct sockaddr_in *)&addr)->sin_addr); + ret = url2ipv4(curr, &((struct sockaddr_in *)addr)->sin_addr); if (!ret) return -1; curr += ret; ((struct sockaddr_in *)addr)->sin_port = (*curr == ':') ? str2uic(++curr) : 80; - ((struct sockaddr_in *)addr)->sin_port = htons(((struct sockaddr_in *)&addr)->sin_port); + ((struct sockaddr_in *)addr)->sin_port = htons(((struct sockaddr_in *)addr)->sin_port); } return 0; } -- 1.7.10.4