From d4cdaf56ae2f8a11f4e4c7c8208297fd76d3f2d3 Mon Sep 17 00:00:00 2001 From: Green-m Date: Tue, 18 Sep 2018 15:48:30 +0800 Subject: [PATCH] Fix issue when kill a non-existent job. --- lib/msf/ui/console/command_dispatcher/jobs.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/msf/ui/console/command_dispatcher/jobs.rb b/lib/msf/ui/console/command_dispatcher/jobs.rb index 8cd5e271c2..9e3663d0e2 100644 --- a/lib/msf/ui/console/command_dispatcher/jobs.rb +++ b/lib/msf/ui/console/command_dispatcher/jobs.rb @@ -209,10 +209,13 @@ module Msf persist_list = [] end + # Stop the job and remove persistence by job id. job_list.map(&:to_s).each do |job| - next unless framework.jobs[job.to_s].ctx[1] # next if no payload context in the job - payload_option = framework.jobs[job.to_s].ctx[1].datastore - persist_list.delete_if{|pjob|pjob['mod_options']['Options'] == payload_option} + if framework.jobs.key?(job) + next unless framework.jobs[job.to_s].ctx[1] # next if no payload context in the job + payload_option = framework.jobs[job.to_s].ctx[1].datastore + persist_list.delete_if{|pjob|pjob['mod_options']['Options'] == payload_option} + end end # Write persist job back to config file. File.open(Msf::Config.persist_file,"w") do |file|