summaryrefslogtreecommitdiff
path: root/www/mod_auth_tkt/files/patch-cgi_logout.cgi
diff options
context:
space:
mode:
authorJun Kuriyama <kuriyama@FreeBSD.org>2015-01-27 03:23:08 +0000
committerJun Kuriyama <kuriyama@FreeBSD.org>2015-01-27 03:23:08 +0000
commit5e2fafd07de0943164eab3135047fff338b9eccc (patch)
tree4fc4ef138b60b6e099fe42f8edac24864520d75d /www/mod_auth_tkt/files/patch-cgi_logout.cgi
parentwww/py-slumber: Remove pre-install target (QA oops) (diff)
- Support apache 2.4.x.
- Split out non-related to QuerySeparator directive to normal patches.
Diffstat (limited to 'www/mod_auth_tkt/files/patch-cgi_logout.cgi')
-rw-r--r--www/mod_auth_tkt/files/patch-cgi_logout.cgi33
1 files changed, 33 insertions, 0 deletions
diff --git a/www/mod_auth_tkt/files/patch-cgi_logout.cgi b/www/mod_auth_tkt/files/patch-cgi_logout.cgi
new file mode 100644
index 000000000000..10709fe33e3d
--- /dev/null
+++ b/www/mod_auth_tkt/files/patch-cgi_logout.cgi
@@ -0,0 +1,33 @@
+diff --git a/cgi/logout.cgi b/cgi/logout.cgi
+index b2a830c..41fa7e1 100755
+--- a/cgi/logout.cgi
++++ b/cgi/logout.cgi
+@@ -33,16 +33,19 @@ $back ||= $q->cookie($at->back_cookie_name) if $at->back_cookie_name;
+ $back ||= $q->param($at->back_arg_name) if $at->back_arg_name;
+ $back = $AuthTktConfig::DEFAULT_BACK_LOCATION if $AuthTktConfig::DEFAULT_BACK_LOCATION;
+ $back ||= $ENV{HTTP_REFERER} if $ENV{HTTP_REFERER} && $AuthTktConfig::BACK_REFERER;
+-if ($back && $back =~ m!^/!) {
+- my $hostname = $server_name;
+- my $port = $server_port;
+- $hostname .= ':' . $port if $port && $port != 80 && $port != 443;
+- $back = sprintf "http%s://%s%s", ($port == 443 ? 's' : ''), $hostname, $back;
+-} elsif ($back && $back !~ m/^http/i) {
+- $back = 'http://' . $back;
++my $back_html = '';
++if ($back) {
++ if ($back =~ m!^/!) {
++ my $hostname = $server_name;
++ my $port = $server_port;
++ $hostname .= ':' . $port if $port && $port != 80 && $port != 443;
++ $back = sprintf "http%s://%s%s", ($port == 443 ? 's' : ''), $hostname, $back;
++ } elsif ($back !~ m/^http/i) {
++ $back = 'http://' . $back;
++ }
++ $back = uri_unescape($back) if $back =~ m/^https?%3A%2F%2F/;
++ $back_html = escapeHTML($back);
+ }
+-$back = uri_unescape($back) if $back =~ m/^https?%3A%2F%2F/;
+-my $back_html = escapeHTML($back) if $back;
+
+ # Logout by resetting the auth cookie
+ my @cookies = cookie(-name => $at->cookie_name, -value => '', -expires => '-1h',