From 1d8e2d33ab610a8fbd33e160300d2b350d9169fb Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Wed, 22 Sep 2010 06:29:23 +0000
Subject: [PATCH] errorreport: Include referer inn error report.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2563 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/Error/Error.php | 14 ++++++++++++++
 www/errorreport.php            |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php
index 92050111d..781560728 100644
--- a/lib/SimpleSAML/Error/Error.php
+++ b/lib/SimpleSAML/Error/Error.php
@@ -102,6 +102,19 @@ class SimpleSAML_Error_Error extends SimpleSAML_Error_Exception {
 		$config = SimpleSAML_Configuration::getInstance();
 		$session = SimpleSAML_Session::getInstance();
 
+		if (isset($_SERVER['HTTP_REFERER'])) {
+			$referer = $_SERVER['HTTP_REFERER'];
+			/*
+			 * Remove anything after the first '?' or ';', just
+			 * in case it contains any sensitive data.
+			 */
+			$referer = explode('?', $referer, 2);
+			$referer = $referer[0];
+			$referer = explode(';', $referer, 2);
+			$referer = $referer[0];
+		} else {
+			$referer = 'unknown';
+		}
 		$errorData = array(
 			'exceptionMsg' => $emsg,
 			'exceptionTrace' => $etrace,
@@ -109,6 +122,7 @@ class SimpleSAML_Error_Error extends SimpleSAML_Error_Exception {
 			'trackId' => $session->getTrackID(),
 			'url' => SimpleSAML_Utilities::selfURLNoQuery(),
 			'version' => $config->getVersion(),
+			'referer' => $referer,
 		);
 		$session->setData('core:errorreport', $reportId, $errorData);
 
diff --git a/www/errorreport.php b/www/errorreport.php
index addf56a3c..83630750a 100644
--- a/www/errorreport.php
+++ b/www/errorreport.php
@@ -28,6 +28,7 @@ if ($data === NULL) {
 		'trackId' => $session->getTrackId(),
 		'url' => 'not set',
 		'version' => $config->getVersion(),
+		'referer' => 'not set',
 	);
 }
 
@@ -58,6 +59,8 @@ $message = '<h1>SimpleSAMLphp Error Report</h1>
 
 <p>Report ID: <tt>' . $data['reportId'] . '</tt></p>
 
+<p>Referer: <tt>' . htmlspecialchars($data['referer']) . '</tt></p>
+
 <hr />
 <div class="footer">This message was sent using simpleSAMLphp. Visit <a href="http://rnd.feide.no/simplesamlphp">simpleSAMLphp homepage</a>.</div>
 
-- 
GitLab