Commit 3b99add Piotr Boniecki
committed
1 parent e716108 commit 3b99add Copy full SHA for 3b99add
File tree 2 files changed +20
-0
lines changed
2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ def delete(name)
50
50
# @return [void]
51
51
def add ( name , value )
52
52
name = normalize_header name . to_s
53
+ validate_value ( value )
53
54
Array ( value ) . each { |v | @pile << [ name , v . to_s ] }
54
55
end
55
56
@@ -209,5 +210,14 @@ def normalize_header(name)
209
210
210
211
raise HeaderError , "Invalid HTTP header field name: #{ name . inspect } "
211
212
end
213
+
214
+ # Ensures there is no new line character in the header value
215
+ #
216
+ # @param [String] value
217
+ # @raise [HeaderError] if value includes new line character
218
+ def validate_value ( value )
219
+ return unless value && value . include? ( "\n " )
220
+ raise HeaderError , "Invalid HTTP header field value: #{ value . inspect } "
221
+ end
212
222
end
213
223
end
Original file line number Diff line number Diff line change 41
41
to raise_error HTTP ::HeaderError
42
42
end
43
43
end
44
+
45
+ it "fails with invalid header value" do
46
+ expect { headers . set "foo" , "bar\n Evil-Header: evil-value" } .
47
+ to raise_error HTTP ::HeaderError
48
+ end
44
49
end
45
50
46
51
describe "#[]=" do
127
132
to raise_error HTTP ::HeaderError
128
133
end
129
134
end
135
+
136
+ it "fails with invalid header value" do
137
+ expect { headers . add "foo" , "bar\n Evil-Header: evil-value" } .
138
+ to raise_error HTTP ::HeaderError
139
+ end
130
140
end
131
141
132
142
describe "#get" do
You can’t perform that action at this time.
0 commit comments