mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
www/mod_remoteip: fix segfault with .httaccess and allow/deny
As described in Apache issue 49838, mod_remoteip may cause segfaults when used together with .htaccess files and allow/deny statements The existing patch was modified to backport fixes from Apache svn r990745 and r990746. PR: 193507 Submitted by: David Froehlich Approved by: maintainer (Jim Riggs)
This commit is contained in:
parent
534c96e334
commit
72e779aa3f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=372343
2 changed files with 35 additions and 7 deletions
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
PORTNAME= mod_remoteip
|
PORTNAME= mod_remoteip
|
||||||
PORTVERSION= 2.3.5.a
|
PORTVERSION= 2.3.5.a
|
||||||
|
PORTREVISION= 1
|
||||||
CATEGORIES= www
|
CATEGORIES= www
|
||||||
MASTER_SITES= ${MASTER_SITE_APACHE_HTTPD}
|
MASTER_SITES= ${MASTER_SITE_APACHE_HTTPD}
|
||||||
DISTNAME= httpd-2.3.5-alpha
|
DISTNAME= httpd-2.3.5-alpha
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- modules/metadata/mod_remoteip.c.orig 2010-05-11 21:33:43.631571954 -0500
|
--- modules/metadata/mod_remoteip.c.orig 2009-05-05 18:52:59 UTC
|
||||||
+++ modules/metadata/mod_remoteip.c 2010-05-11 21:34:15.374903181 -0500
|
+++ modules/metadata/mod_remoteip.c
|
||||||
@@ -127,7 +127,7 @@
|
@@ -127,7 +127,7 @@ static int looks_like_ip(const char *ips
|
||||||
return (*ipstr == '\0');
|
return (*ipstr == '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
const char *arg)
|
const char *arg)
|
||||||
{
|
{
|
||||||
remoteip_config_t *config = ap_get_module_config(cmd->server->module_config,
|
remoteip_config_t *config = ap_get_module_config(cmd->server->module_config,
|
||||||
@@ -142,7 +142,7 @@
|
@@ -142,7 +142,7 @@ static const char *proxies_set(cmd_parms
|
||||||
if (!config->proxymatch_ip)
|
if (!config->proxymatch_ip)
|
||||||
config->proxymatch_ip = apr_array_make(cmd->pool, 1, sizeof(*match));
|
config->proxymatch_ip = apr_array_make(cmd->pool, 1, sizeof(*match));
|
||||||
match = (remoteip_proxymatch_t *) apr_array_push(config->proxymatch_ip);
|
match = (remoteip_proxymatch_t *) apr_array_push(config->proxymatch_ip);
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
if (looks_like_ip(ip)) {
|
if (looks_like_ip(ip)) {
|
||||||
/* Note s may be null, that's fine (explicit host) */
|
/* Note s may be null, that's fine (explicit host) */
|
||||||
@@ -168,7 +168,7 @@
|
@@ -168,7 +168,7 @@ static const char *proxies_set(cmd_parms
|
||||||
break;
|
break;
|
||||||
match = (remoteip_proxymatch_t *)
|
match = (remoteip_proxymatch_t *)
|
||||||
apr_array_push(config->proxymatch_ip);
|
apr_array_push(config->proxymatch_ip);
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@
|
@@ -182,7 +182,7 @@ static const char *proxies_set(cmd_parms
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
const char *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
char lbuf[MAX_STRING_LEN];
|
char lbuf[MAX_STRING_LEN];
|
||||||
@@ -205,7 +205,7 @@
|
@@ -205,7 +205,7 @@ static const char *proxylist_read(cmd_pa
|
||||||
while (*(arg = ap_getword_conf(cmd->temp_pool, &args)) != '\0') {
|
while (*(arg = ap_getword_conf(cmd->temp_pool, &args)) != '\0') {
|
||||||
if (*arg == '#' || *arg == '\0')
|
if (*arg == '#' || *arg == '\0')
|
||||||
break;
|
break;
|
||||||
|
@ -45,3 +45,30 @@
|
||||||
if (errmsg) {
|
if (errmsg) {
|
||||||
errmsg = apr_psprintf(cmd->pool, "%s at line %d of %s",
|
errmsg = apr_psprintf(cmd->pool, "%s at line %d of %s",
|
||||||
errmsg, cfp->line_number, filename);
|
errmsg, cfp->line_number, filename);
|
||||||
|
@@ -260,7 +260,7 @@ static int remoteip_modify_connection(re
|
||||||
|
remote = apr_pstrdup(r->pool, remote);
|
||||||
|
|
||||||
|
#ifdef REMOTEIP_OPTIMIZED
|
||||||
|
- memcpy(&temp_sa, c->remote_addr, sizeof(temp_sa));
|
||||||
|
+ memcpy(temp_sa, c->remote_addr, sizeof(*temp_sa));
|
||||||
|
temp_sa->pool = r->pool;
|
||||||
|
#else
|
||||||
|
temp_sa = c->remote_addr;
|
||||||
|
@@ -310,7 +310,7 @@ static int remoteip_modify_connection(re
|
||||||
|
#ifdef REMOTEIP_OPTIMIZED
|
||||||
|
/* Decode remote_addr - sucks; apr_sockaddr_vars_set isn't 'public' */
|
||||||
|
if (inet_pton(AF_INET, parse_remote,
|
||||||
|
- &temp_sa_buff->sa.sin.sin_addr) > 0) {
|
||||||
|
+ &temp_sa->sa.sin.sin_addr) > 0) {
|
||||||
|
apr_sockaddr_vars_set(temp_sa, APR_INET, temp_sa.port);
|
||||||
|
}
|
||||||
|
#if APR_HAVE_IPV6
|
||||||
|
@@ -409,7 +409,7 @@ static int remoteip_modify_connection(re
|
||||||
|
*/
|
||||||
|
c->remote_ip = apr_pstrdup(c->pool, c->remote_ip);
|
||||||
|
conn->proxied_ip = c->remote_ip;
|
||||||
|
- memcpy(&conn->proxied_addr, &temp_sa, sizeof(temp_sa));
|
||||||
|
+ memcpy(&conn->proxied_addr, temp_sa, sizeof(*temp_sa));
|
||||||
|
conn->proxied_addr.pool = c->pool;
|
||||||
|
c->remote_addr = &conn->proxied_addr;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue