1
0
mirror of https://github.com/apache/httpd.git synced 2026-01-06 09:01:14 +03:00

*) mod_proxy_ftp: Fix segfaults on IPv4 requests to hosts with DNS AAAA records.

PR  40841. [Andrew Rucker Jones <arjones simultan dyndns org>,
     <ast domdv de>, Jim Jagielski]


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1404625 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jim Jagielski
2012-11-01 15:02:46 +00:00
parent eca44e8904
commit 4e312c72da
2 changed files with 12 additions and 3 deletions

View File

@@ -1,6 +1,10 @@
-*- coding: utf-8 -*-
Changes with Apache 2.5.0
*) mod_proxy_ftp: Fix segfaults on IPv4 requests to hosts with DNS AAAA records.
PR 40841. [Andrew Rucker Jones <arjones simultan dyndns org>,
<ast domdv de>, Jim Jagielski]
*) ap_expr: Add req_novary function that allows HTTP header lookups
without adding the name to the Vary header. [Stefan Fritsch]

View File

@@ -1411,7 +1411,7 @@ static int proxy_ftp_handler(request_rec *r, proxy_worker *worker,
ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
"EPSV contacting remote host on port %d", data_port);
if ((rv = apr_socket_create(&data_sock, connect_addr->family, SOCK_STREAM, 0, r->pool)) != APR_SUCCESS) {
if ((rv = apr_socket_create(&data_sock, origin->client_addr->family, SOCK_STREAM, 0, r->pool)) != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01040)
"error creating EPSV socket");
proxy_ftp_cleanup(r, backend);
@@ -1436,8 +1436,13 @@ static int proxy_ftp_handler(request_rec *r, proxy_worker *worker,
/* make the connection */
apr_socket_addr_get(&data_addr, APR_REMOTE, sock);
apr_sockaddr_ip_get(&data_ip, data_addr);
apr_sockaddr_info_get(&epsv_addr, data_ip, connect_addr->family, data_port, 0, p);
rv = apr_socket_connect(data_sock, epsv_addr);
apr_sockaddr_info_get(&epsv_addr, data_ip, origin->client_addr->family, data_port, 0, p);
if (!data_sock)
rv = APR_ENOSOCKET;
else if (!epsv_addr)
rv = APR_EBADIP;
else
rv = apr_socket_connect(data_sock, epsv_addr);
if (rv != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01043)
"EPSV attempt to connect to %pI failed - "