resolv 0.8.0 → 0.8.1

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: '017129811e9d2a2c49065d8f95e96f73acba713f6e1e2ee1cd65abb448bea1ce'
4
- data.tar.gz: 9fe320e19d45e74055b648326efc8bc975b9cbc5aad2a4cd47e1b3660fb81f5e
3
+ metadata.gz: 6d41ba56feaadbca7be99976683ea0272a2e9e87234b24d1c96a841b48c8fab8
4
+ data.tar.gz: 07e1a1cacdf7385307d1be4f276db467703b642a1227a3f264b62be73846d23e
5
5
  SHA512:
6
- metadata.gz: 9632f2e80d4ce1d581f3271b70913e2acef6af77a0289539d0954b191382234d6d53fa190f79bd27468724e917b4ba68fb27e2c8e247ce89f0cabccec1c956a5
7
- data.tar.gz: 59623cf40d63ab667ce5a39301e2eff5186d8c98306cec5c41fd720aad5b74bca7fcfce877ea44b54de297809d41c4822d7bdd5603964c4e772544998a6a5ef7
6
+ metadata.gz: 9a0a5b43154d5f3653de9705843b8c37205913df18dba719023b729711b32527c08544a340e73a2adf3835f5c0a0f1f6876f68ac2005c4305647a033177ac1fc
7
+ data.tar.gz: 3ee24cfd9b10cef67fd53e62a1cbfb9e63dd4709ec6248c9b65ffd020ec70b8eb71aa8acd39704cb068be4a6ce301709bff0cca2ff3b783f3b786965bb7422e4
@@ -247,11 +247,11 @@ InitVM_resolv(void)
247
247
 
248
248
  reg_key_class = regkey;
249
249
  rb_undef_alloc_func(regkey);
250
- rb_define_private_method(singl, "get_dns_server_list", get_dns_server_list, 0);
251
- rb_define_private_method(singl, "tcpip_params", tcpip_params_open, 0);
252
- rb_define_method(regkey, "open", reg_open, 1);
253
- rb_define_method(regkey, "each_key", reg_each_key, 0);
254
- rb_define_method(regkey, "value", reg_value, 1);
250
+ rb_define_private_method(singl, "get_dns_server_list", RUBY_METHOD_FUNC(get_dns_server_list), 0);
251
+ rb_define_private_method(singl, "tcpip_params", RUBY_METHOD_FUNC(tcpip_params_open), 0);
252
+ rb_define_method(regkey, "open", RUBY_METHOD_FUNC(reg_open), 1);
253
+ rb_define_method(regkey, "each_key", RUBY_METHOD_FUNC(reg_each_key), 0);
254
+ rb_define_method(regkey, "value", RUBY_METHOD_FUNC(reg_value), 1);
255
255
  }
256
256
 
257
257
  void
data/lib/resolv.rb CHANGED
@@ -35,7 +35,7 @@ require 'rbconfig'
35
35
  class Resolv
36
36
 
37
37
  # The version string
38
- VERSION = "0.8.0"
38
+ VERSION = "0.8.1"
39
39
 
40
40
  ##
41
41
  # Looks up the first IP address for +name+.
@@ -179,7 +179,7 @@ class Resolv
179
179
  # Resolv::Hosts is a hostname resolver that uses the system hosts file.
180
180
 
181
181
  class Hosts
182
- if /mswin|cygwin|mingw|bccwin/ =~ RUBY_PLATFORM || ::RbConfig::CONFIG['host_os'] =~ /mswin/
182
+ if /mswin|cygwin|mingw/ =~ RUBY_PLATFORM || ::RbConfig::CONFIG['host_os'] =~ /mswin/
183
183
  begin
184
184
  require 'win32/resolv' unless defined?(Win32::Resolv)
185
185
  hosts = Win32::Resolv.get_hosts_path || IO::NULL
@@ -1132,14 +1132,15 @@ class Resolv
1132
1132
  end
1133
1133
 
1134
1134
  def Config.default_config_hash(filename="/etc/resolv.conf")
1135
- if File.exist? filename
1136
- Config.parse_resolv_conf(filename)
1137
- elsif defined?(Win32::Resolv)
1135
+ # Native Windows resolves the path against the current drive, while Cygwin's own resolver honors it.
1136
+ if defined?(Win32::Resolv) and !(/cygwin/ =~ RUBY_PLATFORM and File.exist?(filename))
1138
1137
  search, nameserver = Win32::Resolv.get_resolv_info
1139
1138
  config_hash = {}
1140
1139
  config_hash[:nameserver] = nameserver if nameserver
1141
1140
  config_hash[:search] = [search].flatten if search
1142
1141
  config_hash
1142
+ elsif File.exist? filename
1143
+ Config.parse_resolv_conf(filename)
1143
1144
  else
1144
1145
  {}
1145
1146
  end
@@ -1844,6 +1845,9 @@ class Resolv
1844
1845
  # size counts the encoded form, so it starts at 1 for the root
1845
1846
  # label's terminating zero octet. [RFC 1035 3.1]
1846
1847
  size = 1
1848
+ # A pointer chain decodes to few or no labels, so the 255-octet cap
1849
+ # never bounds its work; cap the pointers followed per name too.
1850
+ pointers = 0
1847
1851
  while true
1848
1852
  raise DecodeError.new("limit exceeded") if @limit <= @index
1849
1853
  case @data.getbyte(@index)
@@ -1854,6 +1858,8 @@ class Resolv
1854
1858
  end
1855
1859
  return d
1856
1860
  when 192..255
1861
+ pointers += 1
1862
+ raise DecodeError.new("too many compression pointers") if pointers > 128
1857
1863
  idx = self.get_unpack('n')[0] & 0x3fff
1858
1864
  if prev_index <= idx
1859
1865
  raise DecodeError.new("non-backward name pointer")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resolv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanaka Akira