diff --git a/lib/net/ldap/dn.rb b/lib/net/ldap/dn.rb index e314b80e..da0ff7ca 100644 --- a/lib/net/ldap/dn.rb +++ b/lib/net/ldap/dn.rb @@ -57,19 +57,19 @@ def each_pair state = :key_oid key << char when ' ' then state = :key - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :key_normal then case char when '=' then state = :value when 'a'..'z', 'A'..'Z', '0'..'9', '-', ' ' then key << char - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :key_oid then case char when '=' then state = :value when '0'..'9', '.', ' ' then key << char - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value then case char @@ -110,7 +110,7 @@ def each_pair when '0'..'9', 'a'..'f', 'A'..'F' then state = :value_normal value << "#{hex_buffer}#{char}".to_i(16).chr - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_quoted then case char @@ -132,7 +132,7 @@ def each_pair when '0'..'9', 'a'..'f', 'A'..'F' then state = :value_quoted value << "#{hex_buffer}#{char}".to_i(16).chr - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_hexstring then case char @@ -145,14 +145,14 @@ def each_pair yield key.string.strip, value.string.rstrip key = StringIO.new value = StringIO.new; - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_hexstring_hex then case char when '0'..'9', 'a'..'f', 'A'..'F' then state = :value_hexstring value << char - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_end then case char @@ -162,14 +162,14 @@ def each_pair yield key.string.strip, value.string.rstrip key = StringIO.new value = StringIO.new; - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end - else raise "Fell out of state machine" + else raise Net::LDAP::InvalidDNError, "Fell out of state machine" end end # Last pair - raise "DN badly formed" unless + raise Net::LDAP::InvalidDNError, "DN badly formed" unless [:value, :value_normal, :value_hexstring, :value_end].include? state yield key.string.strip, value.string.rstrip diff --git a/lib/net/ldap/error.rb b/lib/net/ldap/error.rb index 50442d06..2fe61fa6 100644 --- a/lib/net/ldap/error.rb +++ b/lib/net/ldap/error.rb @@ -60,6 +60,7 @@ class SearchScopeInvalidError < Error; end class ResponseTypeInvalidError < Error; end class ResponseMissingOrInvalidError < Error; end class EmptyDNError < Error; end + class InvalidDNError < Error; end class HashTypeUnsupportedError < Error; end class OperatorError < Error; end class SubstringFilterError < Error; end diff --git a/test/test_dn.rb b/test/test_dn.rb index a7b269b0..ac5949a8 100644 --- a/test/test_dn.rb +++ b/test/test_dn.rb @@ -26,7 +26,6 @@ def test_to_a_hash_symbol assert_equal ['1.23.4', '#A3B4D5', 'ou', 'Company'], dn.to_a end - # TODO: raise a more specific exception than RuntimeError def test_bad_input_raises_error [ 'cn=James,', @@ -38,7 +37,7 @@ def test_bad_input_raises_error 'd1.2=Value', ].each do |input| dn = Net::LDAP::DN.new(input) - assert_raises(RuntimeError) { dn.to_a } + assert_raises(Net::LDAP::InvalidDNError) { dn.to_a } end end end
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: