Forráskód Böngészése

Kernel: Emit ProcFS pledge/veil properties as "N/A" for kernel processes

Pledges and Veil state don't really make sense for kernel mode
processes, as they can do what ever they want since they are in
kernel mode. Make this clear in the system monitor UI by marking
these entries as null.
Brian Gianforcaro 4 éve
szülő
commit
c44d2515b4
1 módosított fájl, 19 hozzáadás és 13 törlés
  1. 19 13
      Kernel/FileSystem/ProcFS.cpp

+ 19 - 13
Kernel/FileSystem/ProcFS.cpp

@@ -824,26 +824,32 @@ static Optional<KBuffer> procfs$all(InodeIdentifier)
     auto build_process = [&](const Process& process) {
     auto build_process = [&](const Process& process) {
         auto process_object = array.add_object();
         auto process_object = array.add_object();
 
 
-        StringBuilder pledge_builder;
+        if (process.is_ring3()) {
+            StringBuilder pledge_builder;
+
 #define __ENUMERATE_PLEDGE_PROMISE(promise)      \
 #define __ENUMERATE_PLEDGE_PROMISE(promise)      \
     if (process.has_promised(Pledge::promise)) { \
     if (process.has_promised(Pledge::promise)) { \
         pledge_builder.append(#promise " ");     \
         pledge_builder.append(#promise " ");     \
     }
     }
-        ENUMERATE_PLEDGE_PROMISES
+            ENUMERATE_PLEDGE_PROMISES
 #undef __ENUMERATE_PLEDGE_PROMISE
 #undef __ENUMERATE_PLEDGE_PROMISE
 
 
-        process_object.add("pledge", pledge_builder.to_string());
+            process_object.add("pledge", pledge_builder.to_string());
 
 
-        switch (process.veil_state()) {
-        case VeilState::None:
-            process_object.add("veil", "None");
-            break;
-        case VeilState::Dropped:
-            process_object.add("veil", "Dropped");
-            break;
-        case VeilState::Locked:
-            process_object.add("veil", "Locked");
-            break;
+            switch (process.veil_state()) {
+            case VeilState::None:
+                process_object.add("veil", "None");
+                break;
+            case VeilState::Dropped:
+                process_object.add("veil", "Dropped");
+                break;
+            case VeilState::Locked:
+                process_object.add("veil", "Locked");
+                break;
+            }
+        } else {
+            process_object.add("pledge", String());
+            process_object.add("veil", String());
         }
         }
 
 
         process_object.add("pid", process.pid().value());
         process_object.add("pid", process.pid().value());