Skip to content

Commit

Permalink
Fix rfx2696 cookie, it should use the to_ber_bin method because to_be…
Browse files Browse the repository at this point in the history
…r will try to encode to UTF-8 first and break the cookie's representation of binary data
  • Loading branch information
amuta committed Jul 21, 2020
1 parent 8ef75a0 commit 1e8547a
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lib/net/ldap/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ def search(args = nil)
# searches when the size limit is larger than 126. We're going to have
# to do a root-DSE record search and not do a paged search if the LDAP
# doesn't support it. Yuck.
rfc2696_cookie = [126, ""]
rfc2696_cookie = [126.to_ber, "".to_ber_bin]
result_pdu = nil
n_results = 0

Expand Down Expand Up @@ -428,7 +428,7 @@ def search(args = nil)
Net::LDAP::LDAPControls::PAGED_RESULTS.to_ber,
# Criticality MUST be false to interoperate with normal LDAPs.
false.to_ber,
rfc2696_cookie.map(&:to_ber).to_ber_sequence.to_s.to_ber,
[rfc2696_cookie[0].to_ber, rfc2696_cookie[1].to_ber_bin].to_ber_sequence.to_s.to_ber,
].to_ber_sequence if paged
controls << ber_sort if ber_sort
controls = controls.empty? ? nil : controls.to_ber_contextspecific(0)
Expand Down Expand Up @@ -494,7 +494,7 @@ def search(args = nil)
if c.value and c.value.length > 0
cookie = c.value.read_ber[1]
if cookie and cookie.length > 0
rfc2696_cookie[1] = cookie
rfc2696_cookie[1] = cookie.to_ber_bin
more_pages = true
end
end
Expand Down

0 comments on commit 1e8547a

Please sign in to comment.