Skip to content

Commit a1771ba

Browse files
committed
Merge pull request ruby-ldap#157 from satoryu/bugfix/filter_parser_fails_to_parse_blackets
Bugfix/filter parser fails to parse blackets
2 parents ac55e4c + 6ea388d commit a1771ba

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

lib/net/ldap/filter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ def parse_filter_branch(scanner)
753753
scanner.scan(/\s*/)
754754
if op = scanner.scan(/<=|>=|!=|:=|=/)
755755
scanner.scan(/\s*/)
756-
if value = scanner.scan(/(?:[-\w*.+:@=,#\$%&!'\s\xC3\x80-\xCA\xAF]|[^\x00-\x7F]|\\[a-fA-F\d]{2})+/u)
756+
if value = scanner.scan(/(?:[-\[\]{}\w*.+:@=,#\$%&!'^~\s\xC3\x80-\xCA\xAF]|[^\x00-\x7F]|\\[a-fA-F\d]{2})+/u)
757757
# 20100313 AZ: Assumes that "(uid=george*)" is the same as
758758
# "(uid=george* )". The standard doesn't specify, but I can find
759759
# no examples that suggest otherwise.

test/test_filter_parser.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ def test_multibyte_characters
1010
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=名前)")
1111
end
1212

13+
def test_brackets
14+
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=[{something}])")
15+
end
16+
1317
def test_colons
1418
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(ismemberof=cn=edu:berkeley:app:calmessages:deans,ou=campus groups,dc=berkeley,dc=edu)")
1519
end

0 commit comments

Comments
 (0)