mini_magick 5.1.0 → 5.2.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: 7ac6bfa9bd38b6ba1482ad9d52e4ce0f983a44ae6cc51d1e7cb66c1cca49209f
4
- data.tar.gz: e3088be1a95e47dc6b0426a8bc76f3ac071e3755f301c3d06c6d46b442ae7274
3
+ metadata.gz: da1546dc65a1492ca64c0747715e0e6b9b3b641541beac9edd6689a2e9544b8b
4
+ data.tar.gz: b03c897214f43f4d106d90b7fcea2d90ae1b9395afbefcf3810fd2af21fe5095
5
5
  SHA512:
6
- metadata.gz: c2703437721ca376faf5674d2b0a10c34f456d0146ee4a7dc3ad506d700be9fcd098301213b1c688931ae872f8507691f02b70eb4f3131df2c1a760e8f86f25d
7
- data.tar.gz: c8d33063710a5e0898e6bd2a5aaca6533c0d2943c4a5c545ab700de5e25eb38fa0efc4e08cf9d5eec46c3ba78d315231c541f6b4fe802306da181513b957291c
6
+ metadata.gz: 666e1178b7a89dedcae4de7220c1a41eb812f8a5a1b14143f669a1337deb26271a94ff7cc6698258617b2584dc93129e021b763365039939d83b7b85b47aa8f5
7
+ data.tar.gz: 6db3e4657d4e1db3c368b435ef256ba33becf7b164bea29154faeb209bd168f7c370b2ec915920c2ef1e1f61fde0da43b1753cacc6b829a9365039364b262902
data/README.md CHANGED
@@ -241,6 +241,7 @@ MiniMagick.configure do |config|
241
241
  config.logger = Logger.new($stdout) # where to log IM commands
242
242
  config.cli_prefix = nil # add prefix to all IM commands
243
243
  config.cli_env = {} # environment variables to set for IM commands
244
+ config.restricted_env = false # when true, block IM commands from accessing system environment variables other than those in cli_env
244
245
  end
245
246
  ```
246
247
 
@@ -32,6 +32,16 @@ module MiniMagick
32
32
  #
33
33
  attr_accessor :cli_env
34
34
 
35
+ ##
36
+ # If set to true, Open3 will restrict system calls to access only
37
+ # environment variables defined in :cli_env, plus HOME, PATH, and LANG
38
+ # since those are required for such system calls. It will not pass on any
39
+ # other environment variables from the system.
40
+ #
41
+ # @return [Boolean]
42
+ #
43
+ attr_accessor :restricted_env
44
+
35
45
  ##
36
46
  # If you don't want commands to take too long, you can set a timeout (in
37
47
  # seconds).
@@ -73,6 +83,7 @@ module MiniMagick
73
83
  base.logger = Logger.new($stdout).tap { |l| l.level = Logger::INFO }
74
84
  base.warnings = true
75
85
  base.cli_env = {}.freeze
86
+ base.restricted_env = false
76
87
  base.graphicsmagick = false
77
88
  end
78
89
 
@@ -27,12 +27,12 @@ module MiniMagick
27
27
  end
28
28
 
29
29
  def execute(command, stdin: "", timeout: MiniMagick.timeout)
30
- env = {}
30
+ env = MiniMagick.restricted_env ? ENV.slice("HOME", "PATH", "LANG") : {}
31
31
  env.merge!(MiniMagick.cli_env)
32
32
  env["MAGICK_TIME_LIMIT"] = timeout.to_s if timeout
33
33
 
34
34
  stdout, stderr, status = log(command.join(" ")) do
35
- Open3.capture3(env, *command, stdin_data: stdin)
35
+ Open3.capture3(env, *command, stdin_data: stdin, unsetenv_others: MiniMagick.restricted_env)
36
36
  end
37
37
 
38
38
  [stdout, stderr, status&.exitstatus]
@@ -121,11 +121,10 @@ module MiniMagick
121
121
  # identify.executable #=> ["firejail", "--force", "magick", "identify"]
122
122
  #
123
123
  def executable
124
- exe = [name]
125
- exe.unshift "gm" if MiniMagick.graphicsmagick
126
- exe.unshift "magick" if MiniMagick.imagemagick7? && name != "magick"
127
- exe.unshift *Array(MiniMagick.cli_prefix)
128
- exe
124
+ exe = Array(MiniMagick.cli_prefix)
125
+ exe << "magick" if MiniMagick.imagemagick7? && name != "magick"
126
+ exe << "gm" if MiniMagick.graphicsmagick
127
+ exe << name
129
128
  end
130
129
 
131
130
  ##
@@ -8,7 +8,7 @@ module MiniMagick
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 5
11
- MINOR = 1
11
+ MINOR = 2
12
12
  TINY = 0
13
13
  PRE = nil
14
14
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_magick
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Johnson
@@ -12,8 +12,36 @@ authors:
12
12
  - Janko Marohnić
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2025-01-12 00:00:00.000000000 Z
15
+ date: 2025-02-22 00:00:00.000000000 Z
16
16
  dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: logger
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: benchmark
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
17
45
  - !ruby/object:Gem::Dependency
18
46
  name: rake
19
47
  requirement: !ruby/object:Gem::Requirement