Fix regression in option validation
Option validation relied on the value being false, not nil, even though normalizing a string to a Boolean doesn't make sense. Normalizing to an empty string seems to work fine.
This commit is contained in:
parent
74669eca80
commit
51a84fbe66
|
@ -25,7 +25,7 @@ module Msf
|
|||
Msf::OptPort.new(__method__.to_s, [ required, desc, default ])
|
||||
end
|
||||
|
||||
# @return [OptAddress]
|
||||
# @return [OptAddressLocal]
|
||||
def self.LHOST(default=nil, required=true, desc="The listen address")
|
||||
Msf::OptAddressLocal.new(__method__.to_s, [ required, desc, default ])
|
||||
end
|
||||
|
@ -40,7 +40,7 @@ module Msf
|
|||
Msf::OptString.new(__method__.to_s, [ required, desc, default ])
|
||||
end
|
||||
|
||||
# @return [OptAddress]
|
||||
# @return [OptAddressRange]
|
||||
def self.RHOST(default=nil, required=true, desc="The target address")
|
||||
Msf::OptAddressRange.new('RHOSTS', [ required, desc, default ], aliases: [ 'RHOST' ])
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ module Msf
|
|||
|
||||
###
|
||||
#
|
||||
# Network address option.
|
||||
# Local network address option.
|
||||
#
|
||||
###
|
||||
class OptAddressLocal < OptAddress
|
||||
|
@ -17,7 +17,7 @@ class OptAddressLocal < OptAddress
|
|||
return unless value.kind_of?(String)
|
||||
return value unless interfaces.include?(value)
|
||||
|
||||
ip_address = NetworkInterface.addresses(value).values.flatten.map{|x| x['addr']}.select do |addr|
|
||||
addrs = NetworkInterface.addresses(value).values.flatten.map { |x| x['addr'] }.select do |addr|
|
||||
begin
|
||||
IPAddr.new(addr).ipv4?
|
||||
rescue IPAddr::InvalidAddressError
|
||||
|
@ -25,9 +25,9 @@ class OptAddressLocal < OptAddress
|
|||
end
|
||||
end
|
||||
|
||||
return if ip_address.blank?
|
||||
return '' if addrs.empty?
|
||||
|
||||
ip_address.first
|
||||
addrs.first
|
||||
end
|
||||
|
||||
def valid?(value, check_empty: true)
|
||||
|
|
Loading…
Reference in New Issue