Skip to content

Commit e3d1ea9

Browse files
author
Cocker Koch
committed
Make regsubst() sensitive-aware
1 parent 8b4331b commit e3d1ea9

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

lib/puppet/functions/regsubst.rb

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
# $i3 = regsubst($ipaddress,'^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$','\\3')
3131
# ```
3232
dispatch :regsubst_string do
33-
param 'Variant[Array[String],String]', :target
33+
param 'Variant[Array[Variant[String,Sensitive[String]]],Variant[String,Sensitive[String]]]', :target
3434
param 'String', :pattern
3535
param 'Variant[String,Hash[String,String]]', :replacement
3636
optional_param 'Optional[Pattern[/^[GEIM]*$/]]', :flags
@@ -67,7 +67,7 @@
6767
# $x = regsubst($ipaddress, /([0-9]+)/, '<\\1>', 'G')
6868
# ```
6969
dispatch :regsubst_regexp do
70-
param 'Variant[Array[String],String]', :target
70+
param 'Variant[Array[Variant[String,Sensitive[String]]],Variant[String,Sensitive[String]]]', :target
7171
param 'Variant[Regexp,Type[Regexp]]', :pattern
7272
param 'Variant[String,Hash[String,String]]', :replacement
7373
optional_param 'Pattern[/^G?$/]', :flags
@@ -95,7 +95,18 @@ def regsubst_regexp(target, pattern, replacement, flags = nil)
9595
end
9696

9797
def inner_regsubst(target, re, replacement, op)
98-
target.respond_to?(op) ? target.send(op, re, replacement) : target.collect { |e| e.send(op, re, replacement) }
98+
if target.respond_to?(unwrap)
99+
return_sensitive = true
100+
target = target.unwrap
101+
else
102+
return_sensitive = false
103+
end
104+
result = target.respond_to?(op) ? target.send(op, re, replacement) : target.collect { |e| e.send(op, re, replacement) }
105+
if return_sensitive
106+
Puppet::Pops::Types::PSensitiveType::Sensitive.new(result)
107+
else
108+
result
109+
end
99110
end
100111
private :inner_regsubst
101112
end

0 commit comments

Comments
 (0)