aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS_TheReturn/KernelWatchdog.cs
diff options
context:
space:
mode:
authorAShifter <[email protected]>2017-05-02 19:43:15 -0600
committerAShifter <[email protected]>2017-05-02 19:43:15 -0600
commitb06801028acc3b3da80ef5077abe8f0baaa82dac (patch)
tree5c65cccdd17f8d89125841663749cbaf970ed52a /ShiftOS_TheReturn/KernelWatchdog.cs
parentbbb21a1b32ff2642eb3f9804ef653e57a8be7e41 (diff)
parent8381c825b1c6d4d47af23e9461ece4f4a1f88cc5 (diff)
downloadshiftos_thereturn-b06801028acc3b3da80ef5077abe8f0baaa82dac.tar.gz
shiftos_thereturn-b06801028acc3b3da80ef5077abe8f0baaa82dac.tar.bz2
shiftos_thereturn-b06801028acc3b3da80ef5077abe8f0baaa82dac.zip
Merge remote-tracking branch 'refs/remotes/shiftos-game/master'
Diffstat (limited to 'ShiftOS_TheReturn/KernelWatchdog.cs')
-rw-r--r--ShiftOS_TheReturn/KernelWatchdog.cs25
1 files changed, 19 insertions, 6 deletions
diff --git a/ShiftOS_TheReturn/KernelWatchdog.cs b/ShiftOS_TheReturn/KernelWatchdog.cs
index cc03f5a..430d36a 100644
--- a/ShiftOS_TheReturn/KernelWatchdog.cs
+++ b/ShiftOS_TheReturn/KernelWatchdog.cs
@@ -66,41 +66,54 @@ namespace ShiftOS.Engine
public static bool IsSafe(Type type)
{
- if (InKernelMode == true)
+ if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Root)
return true;
foreach (var attrib in type.GetCustomAttributes(false))
{
if (attrib is KernelModeAttribute)
+ {
+ if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Root)
+ return true;
return false;
+ }
}
return true;
}
public static bool IsSafe(MethodInfo type)
{
- if (InKernelMode == true)
+ if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Root)
return true;
foreach (var attrib in type.GetCustomAttributes(false))
{
if (attrib is KernelModeAttribute)
+ {
+ if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Root)
+ return true;
return false;
+ }
}
return true;
}
+ static string regularUsername = "";
+
public static void EnterKernelMode()
{
- InKernelMode = true;
- Console.WriteLine("<kernel> Watchdog deactivated, system-level access granted.");
+ regularUsername = SaveSystem.CurrentUser.Username;
+ SaveSystem.CurrentUser = SaveSystem.Users.FirstOrDefault(x => x.Username == "root");
+
}
public static void LeaveKernelMode()
{
- InKernelMode = false;
- Console.WriteLine("<kernel> Kernel mode disabled.");
+ var user = SaveSystem.Users.FirstOrDefault(x => x.Username == regularUsername);
+ if (user == null)
+ throw new Exception("User not in root mode.");
+ SaveSystem.CurrentUser = user;
}
internal static bool CanRunOffline(Type method)