From ab53088e8df151b96d7cb9d502a3c4b2badf63ae Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Fri, 15 Dec 2017 11:47:46 +0800 Subject: [PATCH] MDL-59595 admin: Make sure $ADMIN is properly unset when changing users --- lib/adminlib.php | 4 +--- lib/classes/session/manager.php | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/adminlib.php b/lib/adminlib.php index b14741ef7a4..8cf8a6148e4 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -7970,9 +7970,7 @@ function admin_externalpage_setup($section, $extrabutton = '', array $extraurlpa * @return object admin_root object */ function admin_get_root($reload=false, $requirefulltree=true) { - global $CFG, $DB, $OUTPUT; - - static $ADMIN = NULL; + global $CFG, $DB, $OUTPUT, $ADMIN; if (is_null($ADMIN)) { // create the admin tree! diff --git a/lib/classes/session/manager.php b/lib/classes/session/manager.php index f617cc2217c..6568e4b9b22 100644 --- a/lib/classes/session/manager.php +++ b/lib/classes/session/manager.php @@ -712,6 +712,7 @@ class manager { * @param \stdClass $user record */ public static function set_user(\stdClass $user) { + global $ADMIN; $GLOBALS['USER'] = $user; unset($GLOBALS['USER']->description); // Conserve memory. unset($GLOBALS['USER']->password); // Improve security. @@ -723,6 +724,9 @@ class manager { // Relink session with global $USER just in case it got unlinked somehow. $_SESSION['USER'] =& $GLOBALS['USER']; + // Nullify the $ADMIN tree global. If we're changing users, then this is now stale and must be generated again if needed. + $ADMIN = null; + // Init session key. sesskey(); }