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


Reply via email to