summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2017-09-20 14:41:42 -0700
committerMichael Kozono <mkozono@gmail.com>2017-10-07 10:28:12 -0700
commit3fde6f6806dd86e3df4d08d55a63fed19f1dae55 (patch)
tree596e18f20580a70574c8363164f65ed43a30d80c
parentcb591f86e42a2f3bd4df2980cc4cfed0a0641e71 (diff)
downloadgitlab-ce-3fde6f6806dd86e3df4d08d55a63fed19f1dae55.tar.gz
Fix trailing escaped space
-rw-r--r--lib/gitlab/ldap/dn.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/gitlab/ldap/dn.rb b/lib/gitlab/ldap/dn.rb
index 02a4cbcd13a..c23fac2d57a 100644
--- a/lib/gitlab/ldap/dn.rb
+++ b/lib/gitlab/ldap/dn.rb
@@ -115,6 +115,7 @@ module Gitlab
when '0'..'9', 'a'..'f' then
state = :value_normal_escape_hex
hex_buffer = char
+ when ' ' then state = :value_normal_escape_space; value << char
else state = :value_normal; value << char
end
when :value_normal_escape_hex then
@@ -124,6 +125,16 @@ module Gitlab
value << "#{hex_buffer}#{char}".to_i(16).chr
else raise "DN badly formed"
end
+ when :value_normal_escape_space then
+ case char
+ when '\\' then state = :value_normal_escape
+ when ',' then
+ state = :key
+ yield key.string.strip, value.string # Don't strip trailing escaped space!
+ key = StringIO.new
+ value = StringIO.new;
+ else value << char
+ end
when :value_quoted then
case char
when '\\' then state = :value_quoted_escape