alexdalitz / dnsruby

Dnsruby is a feature-complete DNS(SEC) client for Ruby, as used by many of the world's largest DNS registries and the OpenDNSSEC project
Other
194 stars 77 forks source link

prettyprint.rb:180:in `text': undefined method `length' for nil:NilClass (NoMethodError) #183

Closed marek22k closed 1 year ago

marek22k commented 1 year ago

Hello,

I wanted to write a small script with Ruby that does zonewalking. For this I set dnssec to true and set the authoitive nameserver because it allows "ANY" requests. After that I wanted to print the result with pp and got an error.

require "dnsruby"

resolver = Dnsruby::Resolver.new
resolver.nameserver = "ns1.he.net"
resolver.dnssec = true

pp resolver.query("walking.zonewalking.de", "ANY").answer
[#<Dnsruby::RR::IN::A:0x00007f06ddb4c928
  @address=#<Dnsruby::IPv4 5.45.109.122>,
  @klass=IN,
  @name=#<Dnsruby::Name: walking.zonewalking.de.>,
  @rdata=#<Dnsruby::IPv4 5.45.109.122>,
  @ttl=10800,
  @type=A>,
 #<Dnsruby::RR::IN::RRSIG:0x00007f06ddb50870/home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:180:in `text': undefined method `length' for nil:NilClass (NoMethodError)

  def text(obj, width=obj.length)
                         ^^^^^^^
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:324:in `pretty_print'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:197:in `block in pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:197:in `pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:274:in `block (3 levels) in pp_object'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:272:in `block (2 levels) in pp_object'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:260:in `block in seplist'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:254:in `each'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:254:in `seplist'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:267:in `block in pp_object'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:215:in `object_address_group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:266:in `pp_object'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:328:in `pretty_print'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:197:in `block in pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:197:in `pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:369:in `block (2 levels) in pretty_print'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:260:in `block in seplist'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:254:in `each'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:254:in `seplist'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:368:in `block in pretty_print'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:367:in `pretty_print'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:197:in `block in pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:197:in `pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:93:in `block in pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:154:in `guard_inspect_key'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:93:in `pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:626:in `block in pp'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:625:in `each'
    from /home/marek/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/pp.rb:625:in `pp'
    from <internal:prelude>:15:in `pp'
    from walk.rb:8:in `<main>'
alexdalitz commented 1 year ago

I get the same error when using pp in your code. However, using puts seems to work just fine :

walking.zonewalking.de. 10800 IN A 5.45.109.122 walking.zonewalking.de. 10800 IN RRSIG A 3 10800 20221210044328 ( 20221112161719 65228 walking.zonewalking.de. xT7USGRbPqBH7gTa+3DJtfO+nII+iVBnQn5eIZysz/NK+8UzohOeaDAUKWMiYrIji9h8ZvFpedf1+1bvtr3LAA== ) walking.zonewalking.de. 10800 IN NS ns1.he.net. walking.zonewalking.de. 10800 IN NS ns2.he.net. walking.zonewalking.de. 10800 IN NS ns3.he.net. walking.zonewalking.de. 10800 IN NS ns4.he.net. walking.zonewalking.de. 10800 IN NS ns5.he.net. walking.zonewalking.de. 10800 IN RRSIG NS 3 10800 20221126055104 ( 20221112161121 65228 walking.zonewalking.de. mWm+FqTzst5kPr5ss4kROoNdta1ge1LfTP5Iro/UjlXYUeM+wWRZvrt1IYlLz4IphOnvt5hnNptLvmx8cVxADA== ) walking.zonewalking.de. 10800 IN SOA ns1.he.net. hostmaster.mk16.de. 1668273443 10800 3600 604800 3600 walking.zonewalking.de. 10800 IN RRSIG SOA 3 10800 20221212174851 ( 20221112164851 65228 walking.zonewalking.de. EvKZcRy8pT8luTpbgV4MT4iDhro194yLigRkSjFKVoGBcdL7gNmXhQNJm35REBaFHWakWh+/je5yeELF7XuLBw== ) walking.zonewalking.de. 10800 IN AAAA 2A03:4000:6:2784:: walking.zonewalking.de. 10800 IN RRSIG AAAA 3 10800 20221210044328 ( 20221112161719 65228 walking.zonewalking.de. uTL9RYFWP//XISnuWUlXJxR177YloN0mpmAydJrJ+09M8pVdsMG7z9/tMDSLioGQYP+l1jR7qR565iFNxdGjAQ== ) walking.zonewalking.de. 3600 IN NSEC alive.walking.zonewalking.de. ( A NS SOA AAAA RRSIG NSEC DNSKEY CAA TYPE65534 ) walking.zonewalking.de. 3600 IN RRSIG NSEC 3 3600 20221210044328 ( 20221112161719 65228 walking.zonewalking.de. WKWqdAeUkqoyKhLxtWaNEOdCu2yXYVZegCYETMHiARUCY+uvKuf0SvPjh7pyeo/ywsXJ6N5SFxh90WVCMZf8Bw== ) walking.zonewalking.de. 10800 IN DNSKEY 256 3 ( kV5b1EPhekWSuf+/zCxfkgNWEYpl3/cHJrjdBJp5gS0= ) ; key_tag=65228 walking.zonewalking.de. 10800 IN DNSKEY 257 3 ( gXuSGUf7Eg+ZHvdKlvXDarrbkw9SDOtpu92Sl/dqxBM= ) ; key_tag=61902 walking.zonewalking.de. 10800 IN RRSIG DNSKEY 3 10800 20221212171120 ( 20221112161121 61902 walking.zonewalking.de. XylCHHnvXKfLKi6bsWY8ys9OwEsMofwHZVKRP3EiQwTbkRL9vZ4xuhQ6rPxDEhVwHwMHrcW4xHLuePuyz3xVBg== ) walking.zonewalking.de. 10800 IN CAA 1 iodef "mailto:caa@mk16.de" walking.zonewalking.de. 10800 IN CAA 1 issue "letsencrypt.org" walking.zonewalking.de. 10800 IN RRSIG CAA 3 10800 20221126055104 ( 20221112161121 65228 walking.zonewalking.de. 2TmQmyGsA7Vak9gV1c9EC6fVWM/2MK0obcX7I9JhXbIYPz1E4SFxsRoH5isiTycWerv3uSMc0t6YvciOO6uNDA== ) walking.zonewalking.de. 0 IN TYPE65534 # 5 0ff1ce0001 walking.zonewalking.de. 0 IN TYPE65534 # 5 0ffecc0001 walking.zonewalking.de. 0 IN RRSIG TYPE65534 3 0 20221126132441 ( 20221112161121 65228 walking.zonewalking.de. I9eWcZuG1Sd0SEl7Ju/6hOdtRP8zqAHcXleUC0Nfm8lLjYUa7vpMJ8VWVUVxkjzszpcmBar5U+aiYRIIyKpCBA== )

I'm afraid I don't know what the issue with pp is, but I can't see that this is an issue with dnsruby.

keithrbennett commented 1 year ago

I agree with @alexdalitz . That text method (def text...) is a Pretty Print method that is called by another Pretty Print method. If nil is not a permitted parameter then it should not have been passed (by Pretty Print).

@marek22k Just as another data point, could you try AmazingPrint or AwesomePrint and see if it works?

marek22k commented 1 year ago

Please reopen (or close as not planed) as the error still occurs:

$irb
3.1.1 :001 > require "dnsruby"
 => true 
3.1.1 :002 > 
3.1.1 :003 > resolver = Dnsruby::Resolver.new
 => 
#<Dnsruby::Resolver:0x00007fe6f3fa4df8
... 
3.1.1 :004 > resolver.nameserver = "ns1.he.net"

 => "ns1.he.net" 
3.1.1 :005 > resolver.dnssec = true
 => true 
3.1.1 :006 > 
3.1.1 :007 > pp resolver.query("walking.zonewalking.de", "ANY").answer
[#<Dnsruby::RR::IN::A:0x00007fe6f4284398
  @address=#<Dnsruby::IPv4 5.45.109.122>,
  @klass=IN,
  @name=#<Dnsruby::Name: walking.zonewalking.de.>,
  @rdata=#<Dnsruby::IPv4 5.45.109.122>,
  @ttl=10800,
  @type=A>,
 #<Dnsruby::RR::IN::RRSIG:0x00007fe6f428eff0/home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:180:in `text': undefined method `length' for nil:NilClass (NoMethodError)

  def text(obj, width=obj.length)
                         ^^^^^^^
    from /home/marek/.rvm/gems/ruby-3.1.1/gems/pp-0.4.0/lib/pp.rb:324:in `pretty_print'
    from /home/marek/.rvm/gems/ruby-3.1.1/gems/pp-0.4.0/lib/pp.rb:197:in `block in pp'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/gems/ruby-3.1.1/gems/pp-0.4.0/lib/pp.rb:197:in `pp'
    from /home/marek/.rvm/gems/ruby-3.1.1/gems/pp-0.4.0/lib/pp.rb:274:in `block (3 levels) in pp_object'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:253:in `block (2 levels) in group'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:280:in `nest'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:252:in `block in group'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:265:in `group_sub'
    from /home/marek/.rvm/rubies/ruby-3.1.1/lib/ruby/3.1.0/prettyprint.rb:251:in `group'
    from /home/marek/.rvm/gems/ruby-3.1.1/gems/pp-0.4.0/lib/pp.rb:272:in `block (2 levels) in pp_object'
    from /home/marek/.rvm/gems/ruby-3.1.1/gems/pp-0.4.0/lib/pp.rb:260:in `block in seplist'
marek22k commented 1 year ago

@marek22k Just as another data point, could you try AmazingPrint or AwesomePrint and see if it works?

Unfortunately, I have overlooked your message. Feel free to ping me if I do not answer :-)

$irb            
3.1.1 :001 > require "dnsruby"
 => true 
3.1.1 :002 > 
3.1.1 :003 > resolver = Dnsruby::Resolver.new
 => 
#<Dnsruby::Resolver:0x00007efc28332ec8
...                  
3.1.1 :004 > resolver.nameserver = "ns1.he.net"
3.1.1 :005 > resolver.dnssec = true
 => true 
3.1.1 :006 > require "amazing_print"
 => true 
3.1.1 :007 > ap resolver.query("walking.zonewalking.de", "ANY").answer
[
    [ 0] #<Dnsruby::RR::IN::A:0x00007efc28339340 @rdata=#<Dnsruby::IPv4 5.45.109.122>, @address=#<Dnsruby::IPv4 5.45.109.122>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=A, @klass=IN>,
    [ 1] #<Dnsruby::RR::IN::RRSIG:0x00007efc282ff8c0 @algorithm=, @type_covered=A, @original_ttl=10800, @inception=1679704127, @expiration=1682299416, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature="i\xC5\x8B.K\xBE\xE5\xB1[\xEEGr\xC6.\xB3y\xD9\e~\x9A\x13m\xC1tE\xA5t\a\xE1'\x95X\x87\xA7\xFD\xE0\xF7\x96G\xEB\x1F\x88\x87\xCC\xF4Y\x19\xCFt\xDF%\xF6\xDCn\x83\x1A\xDB\xE5\xF53\xFD8\xC9\x02", @rdata=[1, 15, 3, 10800, 1682299416, 1679704127, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, "i\xC5\x8B.K\xBE\xE5\xB1[\xEEGr\xC6.\xB3y\xD9\e~\x9A\x13m\xC1tE\xA5t\a\xE1'\x95X\x87\xA7\xFD\xE0\xF7\x96G\xEB\x1F\x88\x87\xCC\xF4Y\x19\xCFt\xDF%\xF6\xDCn\x83\x1A\xDB\xE5\xF53\xFD8\xC9\x02"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=RRSIG, @klass=IN>,
    [ 2] #<Dnsruby::RR::IN::NS:0x00007efc28303e48 @rdata=#<Dnsruby::Name: ns1.he.net.>, @domainname=#<Dnsruby::Name: ns1.he.net.>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=NS, @klass=IN>,
    [ 3] #<Dnsruby::RR::IN::NS:0x00007efc28302778 @rdata=#<Dnsruby::Name: ns2.he.net.>, @domainname=#<Dnsruby::Name: ns2.he.net.>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=NS, @klass=IN>,
    [ 4] #<Dnsruby::RR::IN::NS:0x00007efc283007c0 @rdata=#<Dnsruby::Name: ns3.he.net.>, @domainname=#<Dnsruby::Name: ns3.he.net.>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=NS, @klass=IN>,
    [ 5] #<Dnsruby::RR::IN::NS:0x00007efc28307228 @rdata=#<Dnsruby::Name: ns4.he.net.>, @domainname=#<Dnsruby::Name: ns4.he.net.>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=NS, @klass=IN>,
    [ 6] #<Dnsruby::RR::IN::NS:0x00007efc283057e8 @rdata=#<Dnsruby::Name: ns5.he.net.>, @domainname=#<Dnsruby::Name: ns5.he.net.>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=NS, @klass=IN>,
    [ 7] #<Dnsruby::RR::IN::RRSIG:0x00007efc2830b468 @algorithm=, @type_covered=NS, @original_ttl=10800, @inception=1680444564, @expiration=1683038632, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature="WV\xE6\xAF\vL\x0Et\xAF\xBD\xD4m\xAE\xE6l>\xA7y\xF1\\\xEC\xFF](\xDC\x05\xBAC\x8Dv\xB3\x85Ek\x0E\x9B\x87W\x1F\x93\x849\x93\xF5\xC2\x1F\xFDo\x8F\e\x1D\e\xC2l\xCF\xF8\xF4QI\x94\xFA\xF3j\x0F", @rdata=[2, 15, 3, 10800, 1683038632, 1680444564, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, "WV\xE6\xAF\vL\x0Et\xAF\xBD\xD4m\xAE\xE6l>\xA7y\xF1\\\xEC\xFF](\xDC\x05\xBAC\x8Dv\xB3\x85Ek\x0E\x9B\x87W\x1F\x93\x849\x93\xF5\xC2\x1F\xFDo\x8F\e\x1D\e\xC2l\xCF\xF8\xF4QI\x94\xFA\xF3j\x0F"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=RRSIG, @klass=IN>,
    [ 8] #<Dnsruby::RR::IN::SOA:0x00007efc2830fb80 @rdata=[#<Dnsruby::Name: ns1.he.net.>, #<Dnsruby::Name: hostmaster.mk16.de.>, 1668273496, 10800, 3600, 604800, 3600], @mname=#<Dnsruby::Name: ns1.he.net.>, @rname=#<Dnsruby::Name: hostmaster.mk16.de.>, @serial=1668273496, @refresh=10800, @retry=3600, @expire=604800, @minimum=3600, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=SOA, @klass=IN>,
    [ 9] #<Dnsruby::RR::IN::RRSIG:0x00007efc2830d1a0 @algorithm=, @type_covered=SOA, @original_ttl=10800, @inception=1681082819, @expiration=1683678419, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature="B\x845\xEAR5\xEA\xA2\x88\xAA\xB5Bw\xB2\x1E/Y'\x95\xA4\x1E\xB1\xC7\xE4\x86'*\t\xEF\xAF\xBB\xA7\xAD\xE2\xA3ez\xB0y\xD4\t\xD0\x9B\x18\x89\xF8\xDB$\xB3\x8B\xC7n^\xFE\x00B\xBB\xCE\x05\xD8\xB2\xEF-\x06", @rdata=[6, 15, 3, 10800, 1683678419, 1681082819, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, "B\x845\xEAR5\xEA\xA2\x88\xAA\xB5Bw\xB2\x1E/Y'\x95\xA4\x1E\xB1\xC7\xE4\x86'*\t\xEF\xAF\xBB\xA7\xAD\xE2\xA3ez\xB0y\xD4\t\xD0\x9B\x18\x89\xF8\xDB$\xB3\x8B\xC7n^\xFE\x00B\xBB\xCE\x05\xD8\xB2\xEF-\x06"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=RRSIG, @klass=IN>,
    [10] #<Dnsruby::RR::IN::AAAA:0x00007efc2830c188 @rdata=#<Dnsruby::IPv6 2A03:4000:6:2784::>, @address=#<Dnsruby::IPv6 2A03:4000:6:2784::>, @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=AAAA, @klass=IN>,
    [11] #<Dnsruby::RR::IN::RRSIG:0x00007efc28311f98 @algorithm=, @type_covered=AAAA, @original_ttl=10800, @inception=1679704127, @expiration=1682299416, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature=";\x1E\x1D!\xE7\x85\x7F=fN\xFC\xB0\x8F\xB4x\xDE\x8F\x02]\xB3\x8C\x81\x90q\xF4\xBA\x90/\x85\xBA\xE1\xD2\xBD\xF4c\x9F\xAC\xAD8\x9B\x7F\x9C\xC3 \xA2P\xCF|0\x1C7U\xE0\xDEp\t\xFC7{r\x15\x91 \f", @rdata=[28, 15, 3, 10800, 1682299416, 1679704127, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, ";\x1E\x1D!\xE7\x85\x7F=fN\xFC\xB0\x8F\xB4x\xDE\x8F\x02]\xB3\x8C\x81\x90q\xF4\xBA\x90/\x85\xBA\xE1\xD2\xBD\xF4c\x9F\xAC\xAD8\x9B\x7F\x9C\xC3 \xA2P\xCF|0\x1C7U\xE0\xDEp\t\xFC7{r\x15\x91 \f"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=RRSIG, @klass=IN>,
    [12] #<Dnsruby::RR::IN::NSEC:0x00007efc28316d90 @rdata=[#<Dnsruby::Name: alive.walking.zonewalking.de.>, [A, NS, SOA, AAAA, RRSIG, NSEC, DNSKEY, CAA, TYPE65534]], @next_domain=#<Dnsruby::Name: alive.walking.zonewalking.de.>, @types=[A, NS, SOA, AAAA, RRSIG, NSEC, DNSKEY, CAA, TYPE65534], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=3600, @type=NSEC, @klass=IN>,
    [13] #<Dnsruby::RR::IN::RRSIG:0x00007efc283154b8 @algorithm=, @type_covered=NSEC, @original_ttl=3600, @inception=1679704127, @expiration=1682299416, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature=">\xD1\xB9\xC0\rV\xB6\xF9'\xE2\xC2\xFF\xC3\x14c\x03\xDD\x85r\\\xAD\xF1\xF3&\x12\x1F\xAC\xD8_\x16\xE8\xBD\x7F\x9FBX\xFB\x8BK\xBE\x00\t>Q\x9C(bY\xFB\x12\xC9X\fr]\xC9}\xC4T\xB0\xAE\xBE\xE8\x04", @rdata=[47, 15, 3, 3600, 1682299416, 1679704127, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, ">\xD1\xB9\xC0\rV\xB6\xF9'\xE2\xC2\xFF\xC3\x14c\x03\xDD\x85r\\\xAD\xF1\xF3&\x12\x1F\xAC\xD8_\x16\xE8\xBD\x7F\x9FBX\xFB\x8BK\xBE\x00\t>Q\x9C(bY\xFB\x12\xC9X\fr]\xC9}\xC4T\xB0\xAE\xBE\xE8\x04"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=3600, @type=RRSIG, @klass=IN>,
    [14] #<Dnsruby::RR::IN::DNSKEY:0x00007efc283140b8 @make_new_key_tag=true, @protocol=3, @flags=256, @algorithm=, @public_key=nil, @key_tag=65228, @rdata=[256, 3, 15, "\x91^[\xD4C\xE1zE\x92\xB9\xFF\xBF\xCC,_\x92\x03V\x11\x8Ae\xDF\xF7\a&\xB8\xDD\x04\x9Ay\x81-"], @key="\x91^[\xD4C\xE1zE\x92\xB9\xFF\xBF\xCC,_\x92\x03V\x11\x8Ae\xDF\xF7\a&\xB8\xDD\x04\x9Ay\x81-", @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=DNSKEY, @klass=IN>,
    [15] #<Dnsruby::RR::IN::DNSKEY:0x00007efc28318a78 @make_new_key_tag=true, @protocol=3, @flags=257, @algorithm=, @public_key=nil, @key_tag=61902, @rdata=[257, 3, 15, "\x81{\x92\x19G\xFB\x12\x0F\x99\x1E\xF7J\x96\xF5\xC3j\xBA\xDB\x93\x0FR\f\xEBi\xBB\xDD\x92\x97\xF7j\xC4\x13"], @key="\x81{\x92\x19G\xFB\x12\x0F\x99\x1E\xF7J\x96\xF5\xC3j\xBA\xDB\x93\x0FR\f\xEBi\xBB\xDD\x92\x97\xF7j\xC4\x13", @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=DNSKEY, @klass=IN>,
    [16] #<Dnsruby::RR::IN::RRSIG:0x00007efc27fe6440 @algorithm=, @type_covered=DNSKEY, @original_ttl=10800, @inception=1679927390, @expiration=1682519622, @key_tag=61902, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature="\x8Ec\xF9~\x9B~P\xA6\xEC\x8Bd\xFCG\x05o\xAC\x0E%\xE3Yo8~\x15\xB3(r\xB2\xE3\x1E\x82\xC9<\x950pm\xFEH(\xB4\xAA\x8C\v\xD3c\x94\x0F\xFE\xCB\xBF\x9E\\e\x00\xD7\x9C\xD1\xBCn\xCD\x87<\b", @rdata=[48, 15, 3, 10800, 1682519622, 1679927390, 61902, #<Dnsruby::Name: walking.zonewalking.de.>, "\x8Ec\xF9~\x9B~P\xA6\xEC\x8Bd\xFCG\x05o\xAC\x0E%\xE3Yo8~\x15\xB3(r\xB2\xE3\x1E\x82\xC9<\x950pm\xFEH(\xB4\xAA\x8C\v\xD3c\x94\x0F\xFE\xCB\xBF\x9E\\e\x00\xD7\x9C\xD1\xBCn\xCD\x87<\b"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=RRSIG, @klass=IN>,
    [17] #<Dnsruby::RR::IN::CAA:0x00007efc27fe51d0 @rdata="1 iodef \"mailto:caa@mk16.de\"", @flag="1", @property_tag="iodef", @property_value="mailto:caa@mk16.de", @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=CAA, @klass=IN>,
    [18] #<Dnsruby::RR::IN::CAA:0x00007efc27fe41b8 @rdata="1 issue \"letsencrypt.org\"", @flag="1", @property_tag="issue", @property_value="letsencrypt.org", @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=CAA, @klass=IN>,
    [19] #<Dnsruby::RR::IN::RRSIG:0x00007efc27fea978 @algorithm=, @type_covered=CAA, @original_ttl=10800, @inception=1680444564, @expiration=1683038632, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature="\x8F\x9F\xFA\x86\x01w\xC3\x7Fp\x16\xDCK\xD0]\xE3\xEB\x8C\xBE\xE0\xF8\xDC\xF8\x06\x91|j\xB0\xFB\xE0\x0F+\x1DQ\xEF4\xC7Y\xBC\x8Fr\xF5\x8B`o+\xE2%\xD8a\xCDDc\xF2\x16\x03\x8C\xCA\xE4\xAC;\e7]\n", @rdata=[257, 15, 3, 10800, 1683038632, 1680444564, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, "\x8F\x9F\xFA\x86\x01w\xC3\x7Fp\x16\xDCK\xD0]\xE3\xEB\x8C\xBE\xE0\xF8\xDC\xF8\x06\x91|j\xB0\xFB\xE0\x0F+\x1DQ\xEF4\xC7Y\xBC\x8Fr\xF5\x8B`o+\xE2%\xD8a\xCDDc\xF2\x16\x03\x8C\xCA\xE4\xAC;\e7]\n"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=10800, @type=RRSIG, @klass=IN>,
    [20] #<Dnsruby::RR::Generic::Type65534_Class1:0x00007efc27fe87b8 @rdata="\x0F\xF1\xCE\x00\x01", @data="\x0F\xF1\xCE\x00\x01", @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=0, @type=TYPE65534, @klass=IN>,
    [21] #<Dnsruby::RR::Generic::Type65534_Class1:0x00007efc27fef6f8 @rdata="\x0F\xFE\xCC\x00\x01", @data="\x0F\xFE\xCC\x00\x01", @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=0, @type=TYPE65534, @klass=IN>,
    [22] #<Dnsruby::RR::IN::RRSIG:0x00007efc27fee000 @algorithm=, @type_covered=TYPE65534, @original_ttl=0, @inception=1680471730, @expiration=1683065065, @key_tag=65228, @labels=3, @signers_name=#<Dnsruby::Name: walking.zonewalking.de.>, @signature="\x1C\xCE\xDB\xB6&'-+\x14\xAA\xB1^\xD2J-\xD6\xC1\xB0\xB5\xD8\xAE\x0Fh\xC7$\xB2\x94\x05d\xB3\x01\xDC1,\xC3\xA7\xBBp\xE9\x9FE\xF0\xE7v\xFA]\ns\xE9\xE0\xC3]\x9F\xBB\xC9\x96t\xCA!6\xB2\x19E\n", @rdata=[65534, 15, 3, 0, 1683065065, 1680471730, 65228, #<Dnsruby::Name: walking.zonewalking.de.>, "\x1C\xCE\xDB\xB6&'-+\x14\xAA\xB1^\xD2J-\xD6\xC1\xB0\xB5\xD8\xAE\x0Fh\xC7$\xB2\x94\x05d\xB3\x01\xDC1,\xC3\xA7\xBBp\xE9\x9FE\xF0\xE7v\xFA]\ns\xE9\xE0\xC3]\x9F\xBB\xC9\x96t\xCA!6\xB2\x19E\n"], @name=#<Dnsruby::Name: walking.zonewalking.de.>, @ttl=0, @type=RRSIG, @klass=IN>
]
 => nil
marek22k commented 1 year ago

If nil is not a permitted parameter then it should not have been passed (by Pretty Print).

pp nil works without errors.

I'm afraid I don't know what the issue with pp is, but I can't see that this is an issue with dnsruby.

Until now I had this error only with dnsruby. I can report the error to pp. Could you give me an example of what triggers the problem? Somehow dnsruby seems to use a problematic data structure for pp.

marek22k commented 1 year ago

Should I open a new issue or will this one be reopened?

alexdalitz commented 1 year ago

I think you should file an issue with pp, as this does not appear to be a dnsruby problem. In the meantime, perhaps use a different method of printing, such as puts, AmazingPrint, or AwesomePrint, in order to work around the issue.

marek22k commented 1 year ago

I have never seen the problem in any other context than dnsruby. Could you give me a code example which triggers this error? If you don't plan to fix this bug in dnsruby, can you close the issue as not planned?

alexdalitz commented 1 year ago

So the code sample you gave when you raised this issue, triggers the pp error. I do not believe that there is a bug in dnsruby relating to this issue.