facter 4.2.10 → 4.2.11

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: 72df8d4e967960151a122eb609784efda469ec7eeffd57fcd0ccac160b8e0fcd
4
- data.tar.gz: 57f7131294d62d0fa7a36d49e5f722f78aea2d9f9400720d651d896347ec8f67
3
+ metadata.gz: b94d35e70448fb5efde799119e0bcfe508e4097133b44939c453fcbd0f39983a
4
+ data.tar.gz: 6f97201f2619f853c2a66ff15cb4538b67dc3d843ff48629ca65d7b0bfc626d3
5
5
  SHA512:
6
- metadata.gz: ef543fee67eeff6371587b5c16fc1cb4dfbfee9647a41bb844ca0554111de6499dab5bf16fe3a8e3025489c6ebcfd88f9ccc3ffe2b14f514897066740bb979c6
7
- data.tar.gz: 33fbe62bc7d09ed9c8f564f4727a7058c94439eeeb69396be5209d28656d6b4d34577eb271c62c9f93de38b585cab805de56b8d2e7971fca28d6121c6cae9a6c
6
+ metadata.gz: 3ad5f88e1d7e8517c6cae2687fbf74a05ebcd2a92e54baef7276b08d6e0bee0e4af77e4f908951acf2e956d9e9ff9ced4773fff260639e2e1db3b230da75700a
7
+ data.tar.gz: 6a3e65102fd483807f3d67fa17eda71f7cdce61f59cc7e512c81990d9b02a29389c2c582ae3ccf187d3450918c28f9efc0a7a50c31314950f4109d3492e9c21d
@@ -12,6 +12,8 @@ module Facts
12
12
  'azure' unless Facter::Resolvers::Az.resolve(:metadata).empty?
13
13
  when 'kvm', 'xen'
14
14
  'aws' unless Facter::Resolvers::Ec2.resolve(:metadata).empty?
15
+ when 'gce'
16
+ 'gce' unless Facter::Resolvers::Gce.resolve(:metadata).empty?
15
17
  end
16
18
 
17
19
  Facter::ResolvedFact.new(FACT_NAME, provider)
@@ -13,6 +13,8 @@ module Facts
13
13
  'azure' unless Facter::Resolvers::Az.resolve(:metadata).empty?
14
14
  when 'kvm', 'xen'
15
15
  'aws' unless Facter::Resolvers::Ec2.resolve(:metadata).empty?
16
+ when 'gce'
17
+ 'gce' unless Facter::Resolvers::Gce.resolve(:metadata).empty?
16
18
  end
17
19
 
18
20
  Facter::ResolvedFact.new(FACT_NAME, provider)
@@ -24,26 +24,33 @@ MAX_PATH = 32_767
24
24
 
25
25
  module FFI
26
26
  WIN32FALSE = 0
27
- END_OF_WCHAR_STRING = "\0\0".encode('UTF-16LE')
27
+ END_OF_WCHAR_STRING = (+"\0\0").force_encoding(Encoding::UTF_16LE).freeze
28
28
 
29
29
  class Pointer
30
30
  def read_wide_string_with_length(char_length)
31
31
  # char_length is number of wide chars (typically excluding NULLs), *not* bytes
32
- str = get_bytes(0, char_length * 2).force_encoding('UTF-16LE')
33
- str.encode('UTF-8', str.encoding)
32
+ str = get_bytes(0, char_length * 2).force_encoding(Encoding::UTF_16LE)
33
+ str.encode(Encoding::UTF_8, str.encoding)
34
34
  end
35
35
 
36
- def read_wide_string_without_length
36
+ def read_wide_string_without_length(replace_invalid_chars: false)
37
37
  wide_character = get_bytes(0, 2)
38
+ wide_character.force_encoding(Encoding::UTF_16LE)
38
39
  i = 2
39
40
  str = []
40
41
 
41
- while wide_character.encode('UTF-16LE') != END_OF_WCHAR_STRING
42
+ while wide_character != END_OF_WCHAR_STRING
42
43
  str << wide_character
43
44
  wide_character = get_bytes(i, 2)
45
+ wide_character.force_encoding(Encoding::UTF_16LE)
44
46
  i += 2
45
47
  end
46
- str.join.force_encoding('UTF-16LE').encode('UTF-8')
48
+
49
+ if replace_invalid_chars
50
+ str.join.force_encoding(Encoding::UTF_16LE).encode(Encoding::UTF_8, Encoding::UTF_16LE, invalid: :replace)
51
+ else
52
+ str.join.force_encoding(Encoding::UTF_16LE).encode(Encoding::UTF_8)
53
+ end
47
54
  end
48
55
 
49
56
  def read_win32_bool
@@ -71,12 +71,11 @@ module Facter
71
71
  adapter_address = IpAdapterAddressesLh.new(adapter_address[:Next])
72
72
  next
73
73
  end
74
-
75
74
  if !@fact_list[:domain] || @fact_list[:domain].empty?
76
- @fact_list[:domain] = adapter_address[:DnsSuffix].read_wide_string_without_length
75
+ @fact_list[:domain] = adapter_address[:DnsSuffix]
76
+ .read_wide_string_without_length(replace_invalid_chars: true)
77
77
  end
78
-
79
- name = adapter_address[:FriendlyName].read_wide_string_without_length
78
+ name = adapter_address[:FriendlyName].read_wide_string_without_length(replace_invalid_chars: true)
80
79
  net_interface[name] = build_interface_info(adapter_address, name)
81
80
  end
82
81
 
@@ -9,14 +9,14 @@ module Facter
9
9
  DEBUG_MESSAGE = 'File at: %s is not accessible.'
10
10
 
11
11
  def safe_read(path, default_return = '')
12
- return File.read(path) if File.readable?(path)
12
+ return File.read(path, encoding: Encoding::UTF_8) if File.readable?(path)
13
13
 
14
14
  log_failed_to_read(path)
15
15
  default_return
16
16
  end
17
17
 
18
18
  def safe_readlines(path, default_return = [])
19
- return File.readlines(path) if File.readable?(path)
19
+ return File.readlines(path, encoding: Encoding::UTF_8) if File.readable?(path)
20
20
 
21
21
  log_failed_to_read(path)
22
22
  default_return
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.2.10' unless defined?(VERSION)
4
+ VERSION = '4.2.11' unless defined?(VERSION)
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.10
4
+ version: 4.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-24 00:00:00.000000000 Z
11
+ date: 2022-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake