gitlab-net-dns 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04ce28e53e3b0986fb5a2dcde807ac07bc15ceb3bdd127abe31d125e4ae9e054
4
- data.tar.gz: 119fcc2767ae448912fbadb013a82fdeff83fd68c06937fafdefecabbfea0d58
3
+ metadata.gz: 6894aeca8ca5a877a50f79dd5960888cf153cbf33ae1f367681185ab72eeed25
4
+ data.tar.gz: 6db68fc71b24701ebe82fb84e13f2a5a131a6aecba929af968b528d2e40650dd
5
5
  SHA512:
6
- metadata.gz: 0546f72172a83589a710a70cb8ff1e3caabab249cbd49a1ecf8751a802433d6ef6ff9b1667843772598248e7c0b155fd7836cf2aa1131da1be7fa1541bcf0a91
7
- data.tar.gz: 469360aa30e2681543719347ce2a1dd488615df7f22eb7a6482bf2c58ce3e4b9d54fceab14de3de9b0a88e7394a3b2f76320877742c533f6a10e62a9fbb0660a
6
+ metadata.gz: 9d3aae8c3e2868244e5cd5f4da8a89191901f440ca0a999280ee8b1f7b083f57aa10fc1aabe8fe38b13de99579bcfec4805a4ed4eb2c6c35c61d9003c5ea4076
7
+ data.tar.gz: e4d8e5f5dca3b4b9c704d0c4ff8c695b86f4620b48ccfa9ca505cbc0a5ac784517f045b6257ac2e76d15f3e4ad277385814e56905167ec044bed77f543cf645e
data/.gitlab-ci.yml CHANGED
@@ -20,4 +20,4 @@ rspec:
20
20
  - bundle exec rake
21
21
  parallel:
22
22
  matrix:
23
- - RUBY_VERSION: [ "2.7", "3.0", "3.1", "3.2" ]
23
+ - RUBY_VERSION: [ "3.0", "3.1", "3.2", "3.3", "3.4" ]
@@ -11,12 +11,13 @@ Gem::Specification.new do |s|
11
11
  s.description = "Net::DNS is a pure Ruby DNS library, with a clean OO interface and an extensible API."
12
12
  s.licenses = ["Ruby"]
13
13
 
14
- s.required_ruby_version = ">= 2.1"
14
+ s.required_ruby_version = ">= 3.0"
15
15
 
16
16
  s.require_paths = ["lib"]
17
17
  s.files = `git ls-files`.split("\n")
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.extra_rdoc_files = %w[LICENSE.txt]
20
+ s.add_dependency "logger"
20
21
 
21
22
  s.add_development_dependency "mocha"
22
23
  s.add_development_dependency "rake"
@@ -84,6 +84,9 @@ module Net # :nodoc:
84
84
  'CAA' => 257, # RFC 6844
85
85
  }.freeze
86
86
 
87
+ # Pre-initialize the inverted hash to avoid runtime inversion
88
+ TYPES_BY_NUMBER = TYPES.invert.freeze
89
+
87
90
  # The default value when type is nil in Resource Records
88
91
  @@default = TYPES["A"]
89
92
 
@@ -107,7 +110,7 @@ module Net # :nodoc:
107
110
  when String
108
111
  TYPES.key?(type)
109
112
  when Integer
110
- TYPES.invert.key?(type)
113
+ TYPES_BY_NUMBER.key?(type)
111
114
  else
112
115
  raise ArgumentError, "Wrong type class: #{type.class}"
113
116
  end
@@ -118,8 +121,8 @@ module Net # :nodoc:
118
121
  def self.to_str(type)
119
122
  case type
120
123
  when Integer
121
- if TYPES.invert.key? type
122
- TYPES.invert[type]
124
+ if TYPES_BY_NUMBER.key? type
125
+ TYPES_BY_NUMBER[type]
123
126
  else
124
127
  raise ArgumentError, "Unknown type number #{type}"
125
128
  end
@@ -148,7 +151,7 @@ module Net # :nodoc:
148
151
  new_from_num(type)
149
152
  when nil
150
153
  # default type, control with Types.default=
151
- @str = TYPES.invert[@@default]
154
+ @str = TYPES_BY_NUMBER[@@default]
152
155
  @num = @@default
153
156
  else
154
157
  raise ArgumentError, "Wrong type class: #{type.class}"
@@ -197,11 +200,11 @@ module Net # :nodoc:
197
200
 
198
201
  # Contructor for numeric data type.
199
202
  def new_from_num(type)
200
- if TYPES.invert.key? type
203
+ if TYPES_BY_NUMBER.key? type
201
204
  @num = type
202
- @str = TYPES.invert[type]
205
+ @str = TYPES_BY_NUMBER[type]
203
206
  else
204
- raise ArgumentError, "Unkown type number #{type}"
207
+ raise ArgumentError, "Unknown type number #{type}"
205
208
  end
206
209
  end
207
210
  end
data/lib/net/dns/rr.rb CHANGED
@@ -298,7 +298,14 @@ module Net
298
298
  if self.class == Net::DNS::RR
299
299
  temp = dn_expand(data, offset)[1]
300
300
  type = Net::DNS::RR::Types.new data.unpack("@#{temp} n")[0]
301
- (eval "Net::DNS::RR::#{type}").parse_packet(data, offset)
301
+ rr_class = Net::DNS::RR.const_get(type.to_s) rescue nil
302
+
303
+ if rr_class && rr_class.respond_to?(:parse_packet)
304
+ rr_class.parse_packet(data, offset)
305
+ else
306
+ # This shouldn't happen because Net::DNS::RR::Types.new already raises an error on invalid types
307
+ raise "Unknown or unsupported RR type: #{type}"
308
+ end
302
309
  else
303
310
  @name, offset = dn_expand(data, offset)
304
311
  rrtype, cls, @ttl, @rdlength = data.unpack("@#{offset} n2 N n")
@@ -3,6 +3,6 @@
3
3
  module Net
4
4
  module DNS
5
5
  # The current library version.
6
- VERSION = "0.10.0"
6
+ VERSION = "0.11.0"
7
7
  end
8
8
  end
data/test/unit/rr_test.rb CHANGED
@@ -124,4 +124,37 @@ class RRTest < Minitest::Test
124
124
  Net::DNS::RR.new("google.com. 10800 IM A")
125
125
  end
126
126
  end
127
+
128
+ def test_bad_type
129
+ assert_raises(ArgumentError) do
130
+ Net::DNS::RR.new(name: @rr_name,
131
+ ttl: @ttl,
132
+ cls: @cls,
133
+ type: "BOGUS",
134
+ address: @rdata)
135
+ end
136
+ end
137
+
138
+ def test_parse_packet_with_unsupported_type
139
+ # Create a mock binary packet with an unsupported RR type
140
+
141
+ # Start with a normal A record to get valid binary data
142
+ record = Net::DNS::RR.new("example.com. 3600 IN A 192.168.1.1")
143
+ binary_data = record.data
144
+
145
+ # Find where the name ends by looking for a null byte
146
+ name_end = binary_data.index("\x00") + 1
147
+
148
+ # Replace the type value (2 bytes) with 0xFACE (an undefined type)
149
+ modified_data = binary_data.dup
150
+ modified_data[name_end, 2] = [0xFACE].pack("n")
151
+
152
+ # The parse_packet should raise an error for unknown types
153
+ error = assert_raises(ArgumentError) do
154
+ Net::DNS::RR.parse(modified_data)
155
+ end
156
+
157
+ # Verify the error message mentions the unknown type
158
+ assert_match(/Unknown type number/, error.message)
159
+ end
127
160
  end
metadata CHANGED
@@ -1,16 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-net-dns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Ceresa
8
8
  - Simone Carletti
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2023-12-16 00:00:00.000000000 Z
11
+ date: 2025-04-28 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: mocha
16
29
  requirement: !ruby/object:Gem::Requirement
@@ -129,7 +142,6 @@ homepage: https://gitlab.com/gitlab-org/gitlab-net-dns
129
142
  licenses:
130
143
  - Ruby
131
144
  metadata: {}
132
- post_install_message:
133
145
  rdoc_options: []
134
146
  require_paths:
135
147
  - lib
@@ -137,15 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
149
  requirements:
138
150
  - - ">="
139
151
  - !ruby/object:Gem::Version
140
- version: '2.1'
152
+ version: '3.0'
141
153
  required_rubygems_version: !ruby/object:Gem::Requirement
142
154
  requirements:
143
155
  - - ">="
144
156
  - !ruby/object:Gem::Version
145
157
  version: '0'
146
158
  requirements: []
147
- rubygems_version: 3.4.22
148
- signing_key:
159
+ rubygems_version: 3.6.2
149
160
  specification_version: 4
150
161
  summary: Pure Ruby DNS library.
151
162
  test_files: