summaryrefslogtreecommitdiff
path: root/lib/mixlib/shellout/windows.rb
diff options
context:
space:
mode:
authorSteven Murawski <steven.murawski@gmail.com>2016-06-06 16:29:30 -0500
committerSteven Murawski <steven.murawski@gmail.com>2016-06-06 16:47:31 -0500
commitab2ab5c61d5f3ffa94a48a2aca1555bfeda68efb (patch)
tree442089d9fdad4310f3a25197616604219d03b028 /lib/mixlib/shellout/windows.rb
parent4336bf146d624dadd6aeed3f03a11c08e7577c09 (diff)
downloadmixlib-shellout-smurawski/agressive_termination.tar.gz
add logging message if attempting to kill critical processsmurawski/agressive_termination
Diffstat (limited to 'lib/mixlib/shellout/windows.rb')
-rw-r--r--lib/mixlib/shellout/windows.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/mixlib/shellout/windows.rb b/lib/mixlib/shellout/windows.rb
index 6957ea9..5b13dad 100644
--- a/lib/mixlib/shellout/windows.rb
+++ b/lib/mixlib/shellout/windows.rb
@@ -333,13 +333,21 @@ module Mixlib
]
end
+ def self.unsafe_process?(name, logger)
+ return false unless system_required_processes.include? name
+ logger.debug(
+ "A request to kill a critical system process - #{name} - was received and skipped."
+ )
+ true
+ end
+
# recursively kills all child processes of given pid
# calls itself querying for children child procs until
# none remain. Important that a single WmiLite instance
# is passed in since each creates its own WMI rpc process
def self.kill_process_tree(pid, wmi, logger)
wmi.query("select * from Win32_Process where ParentProcessID=#{pid}").each do |instance|
- next if system_required_processes.include? instance.wmi_ole_object.name
+ next if unsafe_process?(instance.wmi_ole_object.name, logger)
child_pid = instance.wmi_ole_object.processid
kill_process_tree(child_pid, wmi, logger)
kill_process(instance, logger)