aboutsummaryrefslogtreecommitdiffstats
path: root/www
diff options
context:
space:
mode:
authormarino <marino@FreeBSD.org>2014-11-09 16:15:14 +0800
committermarino <marino@FreeBSD.org>2014-11-09 16:15:14 +0800
commitff678f6b049e8e276c4771a36e8c996f36ca56cd (patch)
tree4e944a526e30f2b8e9e15b157832e6638fcb902b /www
parentcb3c9726b6d99e1ab5ce5083e49ae95ea7c24e11 (diff)
downloadfreebsd-ports-gnome-ff678f6b049e8e276c4771a36e8c996f36ca56cd.tar.gz
freebsd-ports-gnome-ff678f6b049e8e276c4771a36e8c996f36ca56cd.tar.zst
freebsd-ports-gnome-ff678f6b049e8e276c4771a36e8c996f36ca56cd.zip
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)
Diffstat (limited to 'www')
-rw-r--r--www/mod_remoteip/Makefile1
-rw-r--r--www/mod_remoteip/files/patch-modules__metadata__mod_remoteip.c41
2 files changed, 35 insertions, 7 deletions
diff --git a/www/mod_remoteip/Makefile b/www/mod_remoteip/Makefile
index 0735b250a5b2..00e304471c7a 100644
--- a/www/mod_remoteip/Makefile
+++ b/www/mod_remoteip/Makefile
@@ -3,6 +3,7 @@
PORTNAME= mod_remoteip
PORTVERSION= 2.3.5.a
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= ${MASTER_SITE_APACHE_HTTPD}
DISTNAME= httpd-2.3.5-alpha
diff --git a/www/mod_remoteip/files/patch-modules__metadata__mod_remoteip.c b/www/mod_remoteip/files/patch-modules__metadata__mod_remoteip.c
index 87a64cf5c0f5..0dda13878cac 100644
--- a/www/mod_remoteip/files/patch-modules__metadata__mod_remoteip.c
+++ b/www/mod_remoteip/files/patch-modules__metadata__mod_remoteip.c
@@ -1,6 +1,6 @@
---- modules/metadata/mod_remoteip.c.orig 2010-05-11 21:33:43.631571954 -0500
-+++ modules/metadata/mod_remoteip.c 2010-05-11 21:34:15.374903181 -0500
-@@ -127,7 +127,7 @@
+--- modules/metadata/mod_remoteip.c.orig 2009-05-05 18:52:59 UTC
++++ modules/metadata/mod_remoteip.c
+@@ -127,7 +127,7 @@ static int looks_like_ip(const char *ips
return (*ipstr == '\0');
}
@@ -9,7 +9,7 @@
const char *arg)
{
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)
config->proxymatch_ip = apr_array_make(cmd->pool, 1, sizeof(*match));
match = (remoteip_proxymatch_t *) apr_array_push(config->proxymatch_ip);
@@ -18,7 +18,7 @@
if (looks_like_ip(ip)) {
/* 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;
match = (remoteip_proxymatch_t *)
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;
}
@@ -36,7 +36,7 @@
const char *filename)
{
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') {
if (*arg == '#' || *arg == '\0')
break;
@@ -45,3 +45,30 @@
if (errmsg) {
errmsg = apr_psprintf(cmd->pool, "%s at line %d of %s",
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;
+