sys-admin 1.8.2 → 1.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGES.md +10 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/bsd/sys/admin.rb +10 -3
- data/lib/darwin/sys/admin.rb +9 -2
- data/lib/linux/sys/admin.rb +9 -2
- data/lib/sys/admin.rb +2 -2
- data/spec/sys_admin_shared.rb +1 -1
- data/spec/sys_admin_unix_spec.rb +29 -0
- data/sys-admin.gemspec +1 -1
- data.tar.gz.sig +1 -3
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71c3663b6e540ada2dcca2c54a181b92269549bb5ee6bb129d2bb513edd61283
|
4
|
+
data.tar.gz: 0dc5d42a1e970f9af5920e4e20c5cadbf9521712ef6d00bdbb555158b758f205
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99090f3e3d87d4f13d896845a9432815d8f9ff5287fab78c295263edbec8d40859025b6b1880c1ddde98b40efdee10fd8ef161c5a41a2cab8b52db2103f4c03a
|
7
|
+
data.tar.gz: d9ba7025f7254feaae09eb4feb2bde3cf915b7bf7b4ffaa546c1ff9ef9d6fe2f3c9b57511a6a9f893b0d93269cd546d5ff02b5fa0fd533c64c33fbbb6bdc42bf
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 1.8.4 - 12-Jun-2024
|
2
|
+
* Fixes for DragonFly BSD support.
|
3
|
+
|
4
|
+
## 1.8.3 - 20-Apr-2024
|
5
|
+
* Fixed up the get_group method on most platforms. Previously it was allocating
|
6
|
+
slightly more memory than it needed (wrong struct, oops). In addition, the
|
7
|
+
error handling wasn't consistent because I can't read a man page properly.
|
8
|
+
* More specs were added to properly test the get_group updates.
|
9
|
+
* The github actions test matrix was updated.
|
10
|
+
|
1
11
|
## 1.8.2 - 9-Apr-2023
|
2
12
|
* Lots of rubocop related updates.
|
3
13
|
* Refactored specs to use shared specs.
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -31,7 +31,7 @@ RSpec::Core::RakeTask.new(:spec) do |t|
|
|
31
31
|
t.rspec_opts = '-Ilib/linux'
|
32
32
|
when /sunos|solaris/i
|
33
33
|
t.rspec_opts = '-Ilib/sunos'
|
34
|
-
when /bsd/i
|
34
|
+
when /bsd|dragonfly/i
|
35
35
|
t.rspec_opts = '-Ilib/bsd'
|
36
36
|
when /windows|win32|mingw|cygwin|dos/i
|
37
37
|
t.rspec_opts = '-Ilib/windows'
|
data/lib/bsd/sys/admin.rb
CHANGED
@@ -43,7 +43,7 @@ module Sys
|
|
43
43
|
pw_expire time_t
|
44
44
|
]
|
45
45
|
|
46
|
-
if RbConfig::CONFIG['host_os'] =~ /freebsd/i
|
46
|
+
if RbConfig::CONFIG['host_os'] =~ /freebsd|dragonfly/i
|
47
47
|
fields.push(:pw_fields, :int)
|
48
48
|
end
|
49
49
|
|
@@ -131,7 +131,7 @@ module Sys
|
|
131
131
|
def self.get_group(gid)
|
132
132
|
size = 1024
|
133
133
|
buf = FFI::MemoryPointer.new(:char, size)
|
134
|
-
pbuf = FFI::MemoryPointer.new(
|
134
|
+
pbuf = FFI::MemoryPointer.new(GroupStruct)
|
135
135
|
temp = GroupStruct.new
|
136
136
|
|
137
137
|
begin
|
@@ -142,7 +142,14 @@ module Sys
|
|
142
142
|
val = getgrgid_r(gid, temp, buf, buf.size, pbuf)
|
143
143
|
fun = 'getgrgid_r'
|
144
144
|
end
|
145
|
-
|
145
|
+
|
146
|
+
if pbuf.null?
|
147
|
+
if val != 0
|
148
|
+
raise SystemCallError.new(fun, val)
|
149
|
+
else
|
150
|
+
raise Error, "group '#{gid}' not found"
|
151
|
+
end
|
152
|
+
end
|
146
153
|
rescue Errno::ERANGE
|
147
154
|
size += 1024
|
148
155
|
raise if size > BUF_MAX
|
data/lib/darwin/sys/admin.rb
CHANGED
@@ -125,7 +125,7 @@ module Sys
|
|
125
125
|
def self.get_group(gid)
|
126
126
|
size = 1024
|
127
127
|
buf = FFI::MemoryPointer.new(:char, size)
|
128
|
-
pbuf = FFI::MemoryPointer.new(
|
128
|
+
pbuf = FFI::MemoryPointer.new(GroupStruct)
|
129
129
|
temp = GroupStruct.new
|
130
130
|
|
131
131
|
begin
|
@@ -136,7 +136,14 @@ module Sys
|
|
136
136
|
val = getgrgid_r(gid, temp, buf, buf.size, pbuf)
|
137
137
|
fun = 'getgrgid_r'
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
|
+
if pbuf.null?
|
141
|
+
if val != 0
|
142
|
+
raise SystemCallError.new(fun, val)
|
143
|
+
else
|
144
|
+
raise Error, "group '#{gid}' not found"
|
145
|
+
end
|
146
|
+
end
|
140
147
|
rescue Errno::ERANGE
|
141
148
|
size += 1024
|
142
149
|
raise if size > BUF_MAX
|
data/lib/linux/sys/admin.rb
CHANGED
@@ -120,7 +120,7 @@ module Sys
|
|
120
120
|
def self.get_group(gid)
|
121
121
|
size = 1024
|
122
122
|
buf = FFI::MemoryPointer.new(:char, size)
|
123
|
-
pbuf = FFI::MemoryPointer.new(
|
123
|
+
pbuf = FFI::MemoryPointer.new(GroupStruct)
|
124
124
|
temp = GroupStruct.new
|
125
125
|
|
126
126
|
begin
|
@@ -131,7 +131,14 @@ module Sys
|
|
131
131
|
val = getgrgid_r(gid, temp, buf, buf.size, pbuf)
|
132
132
|
fun = 'getgrgid_r'
|
133
133
|
end
|
134
|
-
|
134
|
+
|
135
|
+
if pbuf.null?
|
136
|
+
if val != 0
|
137
|
+
raise SystemCallError.new(fun, val)
|
138
|
+
else
|
139
|
+
raise Error, "group '#{gid}' not found"
|
140
|
+
end
|
141
|
+
end
|
135
142
|
rescue Errno::ERANGE # Large groups
|
136
143
|
size += 1024
|
137
144
|
raise if size > BUF_MAX
|
data/lib/sys/admin.rb
CHANGED
@@ -5,7 +5,7 @@ module Sys
|
|
5
5
|
# The Admin class provides a unified, cross platform replacement for the Etc module.
|
6
6
|
class Admin
|
7
7
|
# The version of the sys-admin library.
|
8
|
-
VERSION = '1.8.
|
8
|
+
VERSION = '1.8.4'
|
9
9
|
|
10
10
|
private_class_method :new
|
11
11
|
end
|
@@ -23,7 +23,7 @@ case RbConfig::CONFIG['host_os']
|
|
23
23
|
require 'windows/sys/admin'
|
24
24
|
when /darwin|mach/i
|
25
25
|
require 'darwin/sys/admin'
|
26
|
-
when /bsd/i
|
26
|
+
when /bsd|dragonfly/i
|
27
27
|
require 'bsd/sys/admin'
|
28
28
|
else
|
29
29
|
require 'unix/sys/admin'
|
data/spec/sys_admin_shared.rb
CHANGED
data/spec/sys_admin_unix_spec.rb
CHANGED
@@ -76,6 +76,12 @@ RSpec.describe Sys::Admin, :unix do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
describe 'get_group' do
|
79
|
+
before do
|
80
|
+
described_class.class_eval do
|
81
|
+
public :getgrgid_r
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
79
85
|
example 'get_group basic functionality' do
|
80
86
|
expect(described_class).to respond_to(:get_group)
|
81
87
|
expect{ described_class.get_group(group) }.not_to raise_error
|
@@ -100,8 +106,31 @@ RSpec.describe Sys::Admin, :unix do
|
|
100
106
|
end
|
101
107
|
|
102
108
|
example 'get_group raises an Error if the group cannot be found' do
|
109
|
+
expect{ described_class.get_group(123456789) }.to raise_error(Sys::Admin::Error)
|
103
110
|
expect{ described_class.get_group('foofoofoo') }.to raise_error(Sys::Admin::Error)
|
104
111
|
end
|
112
|
+
|
113
|
+
example 'get_group handles large groups and will retry an ERANGE' do
|
114
|
+
allow(Sys::Admin).to receive(:getgrgid_r).with(any_args).and_return(34)
|
115
|
+
allow(Sys::Admin).to receive(:getgrgid_r).with(any_args).and_call_original
|
116
|
+
expect{ described_class.get_group(group_id) }.not_to raise_error
|
117
|
+
end
|
118
|
+
|
119
|
+
example 'get_group will raise the expected error for an ENOENT' do
|
120
|
+
allow(Sys::Admin).to receive(:getgrgid_r).with(any_args).and_return(2)
|
121
|
+
expect{ described_class.get_group(group_id) }.to raise_error(Sys::Admin::Error)
|
122
|
+
end
|
123
|
+
|
124
|
+
example 'get_group will raise the expected error for a failed getgrxxx function call' do
|
125
|
+
allow(Sys::Admin).to receive(:getgrgid_r).with(any_args).and_return(22)
|
126
|
+
allow_any_instance_of(FFI::MemoryPointer).to receive(:null?).and_return(true)
|
127
|
+
expect{ described_class.get_group(group_id) }.to raise_error(Errno::EINVAL)
|
128
|
+
end
|
129
|
+
|
130
|
+
example 'get_group will not retry failures other than an ERANGE' do
|
131
|
+
allow(Sys::Admin).to receive(:getgrgid_r).with(any_args).and_return(35)
|
132
|
+
expect{ described_class.get_group(group_id) }.to raise_error(Sys::Admin::Error)
|
133
|
+
end
|
105
134
|
end
|
106
135
|
|
107
136
|
describe 'groups' do
|
data/sys-admin.gemspec
CHANGED
data.tar.gz.sig
CHANGED
@@ -1,3 +1 @@
|
|
1
|
-
|
2
|
-
��C ��'D�@�5��)A��S6�߃�i� Y6�>{�5����_Rtpl�'���
|
3
|
-
j��^�:�@�Q��^�A�@|uG� �
|
1
|
+
��x0e��}�ت�:�l�ݵ-R��Q����D��f͚�<t�]�?i�e��y/Ɯhi'��`[h�[����T�7���*Gk. �E�$�YH~�5[�s���y�����v��R��)�}E�k9x�F�3^��5H*��Puk���08M�X)���|���*!�uaf�y�b�����?�l��S�5g�G��{�(��J�27�V�><-��{�إ6����U=�|�Z�hǩ4�;�/e�p� a���M}4����7vlͮ04�n��Qx�d?�U����=G&�LW3ݱ*� �@H<�3�����0��`E����H]]�D���+zl��OB+��3�#I�e���@��0��-#oUJ�,Z��̶��R��b����,�N�C+��YT���
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sys-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
36
36
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2024-06-12 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: ffi
|
metadata.gz.sig
CHANGED
Binary file
|