psych
psych copied to clipboard
YAML parser stops processing at the first newline when a byte order mark is present
Migrating https://bugs.ruby-lang.org/issues/13615.
Description
When the input has a byte order mark, the YAML parser stops processing the input upon seeing the first newline.
I believe this is a violation of YAML specification. http://www.yaml.org/spec/1.2/spec.html#id2771184
[1] pry(main)> RUBY_DESCRIPTION
=> "ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin15]"
[2] pry(main)> require 'yaml'
=> true
[3] pry(main)> YAML.load("a: b\nc: d")
=> {"a"=>"b", "c"=>"d"}
[4] pry(main)> YAML.load("\xEF\xBB\xBF" + "a: b\nc: d")
=> {"a"=>"b"}
This is still an issue with 3.0.0 preview1
$ pry
[1] pry(main)> RUBY_DESCRIPTION
=> "ruby 3.0.0preview1 (2020-09-25 master 0096d2b895) [x86_64-darwin19]"
[2] pry(main)> require 'yaml'
=> true
[3] pry(main)> YAML.load("a: b\nc: d")
=> {"a"=>"b", "c"=>"d"}
[4] pry(main)> YAML.load("\xEF\xBB\xBF" + "a: b\nc: d")
=> {"a"=>"b"}