aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2007-10-03 19:20:49 +0000
committerNils Adermann <naderman@naderman.de>2007-10-03 19:20:49 +0000
commit4f094bdb48379d334a87b65b7c71eacad162a841 (patch)
treeb65415d2165d28f97c3f985744bf8e8b5b0840aa
parent7a942662d95775dc7a538bfe6346e7927cce082a (diff)
downloadforums-4f094bdb48379d334a87b65b7c71eacad162a841.tar
forums-4f094bdb48379d334a87b65b7c71eacad162a841.tar.gz
forums-4f094bdb48379d334a87b65b7c71eacad162a841.tar.bz2
forums-4f094bdb48379d334a87b65b7c71eacad162a841.tar.xz
forums-4f094bdb48379d334a87b65b7c71eacad162a841.zip
#i101
git-svn-id: file:///svn/phpbb/trunk@8127 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r--phpBB/common.php22
1 files changed, 20 insertions, 2 deletions
diff --git a/phpBB/common.php b/phpBB/common.php
index 7b3a57c7d8..31d6a2ca85 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -65,8 +65,26 @@ function deregister_globals()
{
if (isset($not_unset[$varname]))
{
- // Hacking attempt. No point in continuing.
- exit;
+ // Hacking attempt. No point in continuing unless it's a COOKIE
+ if ($varname !== 'GLOBALS' || isset($_GET['GLOBALS']) || isset($_POST['GLOBALS']) || isset($_SERVER['GLOBALS']) || isset($_SESSION['GLOBALS']) || isset($_ENV['GLOBALS']) || isset($_FILES['GLOBALS']))
+ {
+ exit;
+ }
+ else
+ {
+ $cookie = &$_COOKIE;
+ while (isset($cookie['GLOBALS']))
+ {
+ foreach ($cookie['GLOBALS'] as $registered_var => $value)
+ {
+ if (!isset($not_unset[$registered_var]))
+ {
+ unset($GLOBALS[$registered_var]);
+ }
+ }
+ $cookie = &$cookie['GLOBALS'];
+ }
+ }
}
unset($GLOBALS[$varname]);