Hello community, here is the log from the commit of package rubygem-yajl-ruby for openSUSE:Factory checked in at 2018-09-20 11:41:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-yajl-ruby (Old) and /work/SRC/openSUSE:Factory/.rubygem-yajl-ruby.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "rubygem-yajl-ruby" Thu Sep 20 11:41:40 2018 rev:15 rq:635254 version:1.4.1 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-yajl-ruby/rubygem-yajl-ruby.changes 2018-07-18 22:52:32.887237819 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-yajl-ruby.new/rubygem-yajl-ruby.changes 2018-09-20 11:41:44.536846573 +0200 @@ -1,0 +2,6 @@ +Wed Sep 5 10:48:37 UTC 2018 - coolo@suse.com + +- updated to version 1.4.1 + see installed CHANGELOG.md + +------------------------------------------------------------------- Old: ---- yajl-ruby-1.4.0.gem New: ---- yajl-ruby-1.4.1.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-yajl-ruby.spec ++++++ --- /var/tmp/diff_new_pack.DTkiES/_old 2018-09-20 11:41:45.328846109 +0200 +++ /var/tmp/diff_new_pack.DTkiES/_new 2018-09-20 11:41:45.332846106 +0200 @@ -24,7 +24,7 @@ # Name: rubygem-yajl-ruby -Version: 1.4.0 +Version: 1.4.1 Release: 0 %define mod_name yajl-ruby %define mod_full_name %{mod_name}-%{version} ++++++ yajl-ruby-1.4.0.gem -> yajl-ruby-1.4.1.gem ++++++ Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/yajl/yajl_encode.c new/ext/yajl/yajl_encode.c --- old/ext/yajl/yajl_encode.c 2018-04-27 20:16:03.000000000 +0200 +++ new/ext/yajl/yajl_encode.c 2018-07-27 18:41:51.000000000 +0200 @@ -59,12 +59,18 @@ unsigned int htmlSafe) { unsigned int beg = 0; - unsigned int end = 0; + unsigned int end = 0; + unsigned int increment = 0; char hexBuf[7]; + char entityBuffer[7]; hexBuf[0] = '\\'; hexBuf[1] = 'u'; hexBuf[2] = '0'; hexBuf[3] = '0'; hexBuf[6] = 0; + entityBuffer[0] = '\\'; entityBuffer[1] = 'u'; entityBuffer[2] = '2'; entityBuffer[3] = '0'; + entityBuffer[6] = 0; + while (end < len) { + increment = 1; const char * escaped = NULL; switch (str[end]) { case '\r': escaped = "\\r"; break; @@ -76,10 +82,39 @@ case '\b': escaped = "\\b"; break; case '\t': escaped = "\\t"; break; case '/': - if (htmlSafe) { + if (htmlSafe == 1 || htmlSafe == 2) { escaped = "\\/"; } break; + /* Escaping 0xe280a8 0xe280a9 */ + case 0xe2: + if (htmlSafe == 2) { + if (len - end >= 2 && str[end + 1] == 0x80) { + if (str[end + 2] == 0xa8) { + increment = 3; + entityBuffer[4] = '2'; + entityBuffer[5] = '8'; + escaped = entityBuffer; + break; + } + + if (str[end + 2] == 0xa9) { + increment = 3; + entityBuffer[4] = '2'; + entityBuffer[5] = '9'; + escaped = entityBuffer; + break; + } + } + } + case '<': + case '>': + case '&': + if (htmlSafe == 2) { + CharToHex(str[end], hexBuf + 4); + escaped = hexBuf; + } + break; default: if ((unsigned char) str[end] < 32) { CharToHex(str[end], hexBuf + 4); @@ -90,7 +125,8 @@ if (escaped != NULL) { print(ctx, (const char *) (str + beg), end - beg); print(ctx, escaped, (unsigned int)strlen(escaped)); - beg = ++end; + end += increment; + beg = end; } else { ++end; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/yajl/yajl_ext.c new/ext/yajl/yajl_ext.c --- old/ext/yajl/yajl_ext.c 2018-04-27 20:16:03.000000000 +0200 +++ new/ext/yajl/yajl_ext.c 2018-07-27 18:41:51.000000000 +0200 @@ -1030,9 +1030,14 @@ actualIndent = indentString; } } + if (rb_hash_aref(opts, sym_html_safe) == Qtrue) { htmlSafe = 1; } + + if (rb_hash_aref(opts, sym_entities) == Qtrue) { + htmlSafe = 2; + } } if (!indentString) { indentString = defaultIndentString; @@ -1356,6 +1361,7 @@ sym_pretty = ID2SYM(rb_intern("pretty")); sym_indent = ID2SYM(rb_intern("indent")); sym_html_safe = ID2SYM(rb_intern("html_safe")); + sym_entities = ID2SYM(rb_intern("entities")); sym_terminator = ID2SYM(rb_intern("terminator")); sym_symbolize_keys = ID2SYM(rb_intern("symbolize_keys")); sym_symbolize_names = ID2SYM(rb_intern("symbolize_names")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/yajl/yajl_ext.h new/ext/yajl/yajl_ext.h --- old/ext/yajl/yajl_ext.h 2018-04-27 20:16:03.000000000 +0200 +++ new/ext/yajl/yajl_ext.h 2018-07-27 18:41:51.000000000 +0200 @@ -56,7 +56,7 @@ static VALUE cStandardError, cParseError, cEncodeError, mYajl, cParser, cProjector, cEncoder; static ID intern_io_read, intern_call, intern_keys, intern_to_s, intern_to_json, intern_has_key, intern_to_sym, intern_as_json; -static ID sym_allow_comments, sym_check_utf8, sym_pretty, sym_indent, sym_terminator, sym_symbolize_keys, sym_symbolize_names, sym_html_safe; +static ID sym_allow_comments, sym_check_utf8, sym_pretty, sym_indent, sym_terminator, sym_symbolize_keys, sym_symbolize_names, sym_html_safe, sym_entities; #define GetParser(obj, sval) Data_Get_Struct(obj, yajl_parser_wrapper, sval); #define GetEncoder(obj, sval) Data_Get_Struct(obj, yajl_encoder_wrapper, sval); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/yajl/version.rb new/lib/yajl/version.rb --- old/lib/yajl/version.rb 2018-04-27 20:16:03.000000000 +0200 +++ new/lib/yajl/version.rb 2018-07-27 18:41:51.000000000 +0200 @@ -1,3 +1,3 @@ module Yajl - VERSION = '1.4.0' + VERSION = '1.4.1' end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2018-04-27 20:16:03.000000000 +0200 +++ new/metadata 2018-07-27 18:41:51.000000000 +0200 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: yajl-ruby version: !ruby/object:Gem::Version - version: 1.4.0 + version: 1.4.1 platform: ruby authors: - Brian Lopez @@ -9,7 +9,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2018-04-27 00:00:00.000000000 Z +date: 2018-07-27 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rake-compiler @@ -17,42 +17,42 @@ requirements: - - ">=" - !ruby/object:Gem::Version - version: 0.7.5 + version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version - version: 0.7.5 + version: '0' - !ruby/object:Gem::Dependency name: rspec requirement: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version - version: '3.0' + version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version - version: '3.0' + version: '0' - !ruby/object:Gem::Dependency name: activesupport requirement: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version - version: 3.1.2 + version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version - version: 3.1.2 + version: '0' - !ruby/object:Gem::Dependency name: json requirement: !ruby/object:Gem::Requirement @@ -71,16 +71,16 @@ name: benchmark-memory requirement: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version - version: '0.1' + version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - "~>" + - - ">=" - !ruby/object:Gem::Version - version: '0.1' + version: '0' description: email: seniorlopez@gmail.com executables: [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/encoding/encoding_spec.rb new/spec/encoding/encoding_spec.rb --- old/spec/encoding/encoding_spec.rb 2018-04-27 20:16:03.000000000 +0200 +++ new/spec/encoding/encoding_spec.rb 2018-07-27 18:41:51.000000000 +0200 @@ -275,11 +275,27 @@ expect(safe_encoder.encode("</script>")).to eql("\"<\\/script>\"") end + it "should not encode characters with entities by default" do + expect(Yajl.dump("\u2028\u2029><&")).to eql("\"\u2028\u2029><&\"") + end + + it "should encode characters with entities when enabled" do + expect(Yajl.dump("\u2028\u2029><&", entities: true)).to eql("\"\\u2028\\u2029\\u003E\\u003C\\u0026\"") + end + it "should default to *not* escaping / characters" do unsafe_encoder = Yajl::Encoder.new expect(unsafe_encoder.encode("</script>")).not_to eql("\"<\\/script>\"") end + it "should encode slashes when enabled" do + unsafe_encoder = Yajl::Encoder.new(:entities => false) + safe_encoder = Yajl::Encoder.new(:entities => true) + + expect(unsafe_encoder.encode("</script>")).not_to eql("\"<\\/script>\"") + expect(safe_encoder.encode("</script>")).to eql("\"\\u003C\\/script\\u003E\"") + end + it "return value of #to_json must be a string" do expect { Yajl::Encoder.encode(TheMindKiller.new) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yajl-ruby.gemspec new/yajl-ruby.gemspec --- old/yajl-ruby.gemspec 2018-04-27 20:16:03.000000000 +0200 +++ new/yajl-ruby.gemspec 2018-07-27 18:41:52.000000000 +0200 @@ -17,11 +17,10 @@ s.required_ruby_version = ">= 1.8.6" # tests - s.add_development_dependency 'rake-compiler', '>= 0.7.5' - s.add_development_dependency 'rspec', '~> 3.0' + s.add_development_dependency 'rake-compiler' + s.add_development_dependency 'rspec' # benchmarks - s.add_development_dependency 'activesupport', '~> 3.1.2' + s.add_development_dependency 'activesupport' s.add_development_dependency 'json' - s.add_development_dependency "benchmark-memory", "~> 0.1" + s.add_development_dependency "benchmark-memory" end -