summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-29 13:59:37 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-29 13:59:37 +0000
commit6b2f77a844a8bf3c8be4f0888df6f53dec9198c5 (patch)
tree9b148fa242d0a4c3747d3075cbc76949552a1f37
parent337a3da71cd3c7e98d9c11b1f58e53049489dacf (diff)
merge revision(s) 53363: [Backport #11910] [Backport #12061]
* lib/resolv.rb (Resolv::IPv6.create): avoid modifying frozen * test/resolv/test_dns.rb (test_ipv6_create): test for above [Bug #11910] [ruby-core:72559] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--lib/resolv.rb10
-rw-r--r--test/resolv/test_dns.rb6
-rw-r--r--version.h2
4 files changed, 18 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 1f7d2ff730..387a3b2f1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Mar 29 22:56:44 2016 Eric Wong <e@80x24.org>
+
+ * lib/resolv.rb (Resolv::IPv6.create): avoid modifying frozen
+ * test/resolv/test_dns.rb (test_ipv6_create): test for above
+ [Bug #11910] [ruby-core:72559]
+
Tue Mar 29 22:31:48 2016 Shugo Maeda <shugo@ruby-lang.org>
* range.c (range_eqq): revert r11113 because rb_call_super() is
diff --git a/lib/resolv.rb b/lib/resolv.rb
index 61bed16b3f..9a981b99bd 100644
--- a/lib/resolv.rb
+++ b/lib/resolv.rb
@@ -2451,14 +2451,14 @@ class Resolv
when IPv6
return arg
when String
- address = ''
+ address = ''.b
if Regex_8Hex =~ arg
arg.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
elsif Regex_CompressedHex =~ arg
prefix = $1
suffix = $2
- a1 = ''
- a2 = ''
+ a1 = ''.b
+ a2 = ''.b
prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
omitlen = 16 - a1.length - a2.length
@@ -2474,8 +2474,8 @@ class Resolv
elsif Regex_CompressedHex4Dec =~ arg
prefix, suffix, a, b, c, d = $1, $2, $3.to_i, $4.to_i, $5.to_i, $6.to_i
if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
- a1 = ''
- a2 = ''
+ a1 = ''.b
+ a2 = ''.b
prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
omitlen = 12 - a1.length - a2.length
diff --git a/test/resolv/test_dns.rb b/test/resolv/test_dns.rb
index 338130e64f..d1431c1427 100644
--- a/test/resolv/test_dns.rb
+++ b/test/resolv/test_dns.rb
@@ -199,6 +199,12 @@ class TestResolvDNS < Test::Unit::TestCase
assert_equal(expected, labels)
end
+ def test_ipv6_create
+ ref = '[Bug #11910] [ruby-core:72559]'
+ assert_instance_of Resolv::IPv6, Resolv::IPv6.create('::1')
+ assert_instance_of Resolv::IPv6, Resolv::IPv6.create('::1:127.0.0.1')
+ end
+
def test_too_big_label_address
n = 2000
m = Resolv::DNS::Message::MessageEncoder.new {|msg|
diff --git a/version.h b/version.h
index bfafe797c5..91980039f4 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.3.0"
#define RUBY_RELEASE_DATE "2016-03-29"
-#define RUBY_PATCHLEVEL 52
+#define RUBY_PATCHLEVEL 53
#define RUBY_RELEASE_YEAR 2016
#define RUBY_RELEASE_MONTH 3