Skip to content

Commit 2775384

Browse files
committed
Don't allow line terminators in single-quoted strings
1 parent b0293f2 commit 2775384

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

lib/graphql/language/lexer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ module Punctuation
254254
STRING_ESCAPE = %r{[\\][\\/bfnrt]}
255255
BLOCK_QUOTE = '"""'
256256
ESCAPED_QUOTE = /\\"/;
257-
STRING_CHAR = /#{ESCAPED_QUOTE}|[^"\\]|#{UNICODE_ESCAPE}|#{STRING_ESCAPE}/
257+
STRING_CHAR = /#{ESCAPED_QUOTE}|[^"\\\n\r]|#{UNICODE_ESCAPE}|#{STRING_ESCAPE}/
258258
QUOTED_STRING_REGEXP = %r{#{QUOTE} (?:#{STRING_CHAR})* #{QUOTE}}x
259259
BLOCK_STRING_REGEXP = %r{
260260
#{BLOCK_QUOTE}

spec/graphql/language/parser_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616
assert_equal expected_message, err.message
1717
end
1818

19+
it "rejects newlines in single-quoted strings" do
20+
assert_raises(GraphQL::ParseError) {
21+
GraphQL.parse("{ doStuff(arg: \"
22+
abc\") }"
23+
)
24+
}
25+
assert_raises(GraphQL::ParseError) {
26+
GraphQL.parse("{ doStuff(arg: \"\rabc\") }")
27+
}
28+
end
29+
1930
describe "when there are no selections" do
2031
it 'raises a ParseError' do
2132
assert_raises(GraphQL::ParseError) {

0 commit comments

Comments
 (0)