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:
William Vu 2018-05-24 17:50:58 -05:00
parent 74669eca80
commit 51a84fbe66
2 changed files with 6 additions and 6 deletions

View File

@ -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

View File

@ -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)