summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-09 15:37:04 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-09 15:37:04 +0000
commit60055f8dfde7251330d345c64f0963a2e11cd9d3 (patch)
treef2e712e59a5123f54b0871dd1808883dc3c298ae /test
parenta3e4d6a56eb733bc22cf97b885fb460c4b598018 (diff)
* lib/resolv.rb (Resolv::DNS::Message::MessageEncoder#put_labels):
Prevent overflow of pointer to labels. Patch by Hannes Georg. [ruby-core:71248] [Bug #11632] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/resolv/test_dns.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/resolv/test_dns.rb b/test/resolv/test_dns.rb
index e7857248ce..9f993ba96a 100644
--- a/test/resolv/test_dns.rb
+++ b/test/resolv/test_dns.rb
@@ -197,4 +197,21 @@ class TestResolvDNS < Test::Unit::TestCase
expected = (['0'] * 32 + ['ip6', 'arpa']).map {|label| Resolv::DNS::Label::Str.new(label) }
assert_equal(expected, labels)
end
+
+ def test_too_big_label_address
+ n = 2000
+ m = Resolv::DNS::Message::MessageEncoder.new {|msg|
+ 2.times {
+ n.times {|i| msg.put_labels(["foo#{i}"]) }
+ }
+ }
+ Resolv::DNS::Message::MessageDecoder.new(m.to_s) {|msg|
+ 2.times {
+ n.times {|i|
+ assert_equal(["foo#{i}"], msg.get_labels.map {|label| label.to_s })
+ }
+ }
+ }
+ assert_operator(2**14, :<, m.to_s.length)
+ end
end