diff options
| author | AShifter <[email protected]> | 2017-05-02 19:43:15 -0600 |
|---|---|---|
| committer | AShifter <[email protected]> | 2017-05-02 19:43:15 -0600 |
| commit | b06801028acc3b3da80ef5077abe8f0baaa82dac (patch) | |
| tree | 5c65cccdd17f8d89125841663749cbaf970ed52a /ShiftOS_TheReturn/KernelWatchdog.cs | |
| parent | bbb21a1b32ff2642eb3f9804ef653e57a8be7e41 (diff) | |
| parent | 8381c825b1c6d4d47af23e9461ece4f4a1f88cc5 (diff) | |
| download | shiftos_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.cs | 25 |
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) |
