Commit 90b1f8b Piotr Boniecki
committed
1 parent a90f89e commit 90b1f8b Copy full SHA for 90b1f8b
File tree 2 files changed +22
-1
lines changed
2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -50,7 +50,7 @@ def delete(name)
50
50
# @return [void]
51
51
def add ( name , value )
52
52
name = normalize_header name . to_s
53
- Array ( value ) . each { |v | @pile << [ name , v . to_s ] }
53
+ Array ( value ) . each { |v | @pile << [ name , validate_value ( v ) ] }
54
54
end
55
55
56
56
# Returns list of header values if any.
@@ -209,5 +209,16 @@ def normalize_header(name)
209
209
210
210
raise HeaderError , "Invalid HTTP header field name: #{ name . inspect } "
211
211
end
212
+
213
+ # Ensures there is no new line character in the header value
214
+ #
215
+ # @param [String] value
216
+ # @raise [HeaderError] if value includes new line character
217
+ # @return [String] stringified header value
218
+ def validate_value ( value )
219
+ v = value . to_s
220
+ return v unless v . include? ( "\n " )
221
+ raise HeaderError , "Invalid HTTP header field value: #{ v . inspect } "
222
+ end
212
223
end
213
224
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