Skip to content

Commit

Permalink
MODULES-753
Browse files Browse the repository at this point in the history
Fixes user adding and removing using either UID or string username.
Tested with both negated and non-negated values and works on all
supported operating systems.

Remote whitespace
  • Loading branch information
jonnytdevops committed Jan 22, 2015
1 parent 19ea036 commit 6560832
Showing 1 changed file with 25 additions and 8 deletions.
33 changes: 25 additions & 8 deletions lib/puppet/type/firewall.rb
Original file line number Diff line number Diff line change
Expand Up @@ -737,20 +737,37 @@ def insync?(is)
# between string usernames and UIDs (integers). We also need to ignore
# spaces as they are irrelevant with respect to rule sync.

# Remove whitespace
is = is.gsub(/\s+/,'')
should = @should.first.to_s.gsub(/\s+/,'')

# Keep track of negation, but remove the '!'
is_negate = ''
should_negate = ''
if is.start_with?('!')
lookup_id = is.gsub(/^!/,'')
negate = '!'
else
lookup_id = is
negate = ''
is = is.gsub(/^!/,'')
is_negate = '!'
end
if should.start_with?('!')
should = should.gsub(/^!/,'')
should_negate = '!'
end

resolve = Etc.getpwuid(Integer(lookup_id)).name
resolve_with_negate = "#{negate}#{resolve}"
# If 'should' contains anything other than digits,
# we assume that we have to do a lookup to convert
# to UID
unless should[/[0-9]+/] == should
should = Etc.getpwnam(should).uid
end

# If 'is' contains anything other than digits,
# we assume that we have to do a lookup to convert
# to UID
unless is[/[0-9]+/] == is
is = Etc.getpwnam(is).uid
end

return is.to_s == @should.first.to_s.gsub(/\s+/,'') || resolve_with_negate == @should.first.to_s.gsub(/\s+/,'')
return "#{is_negate}#{is}" == "#{should_negate}#{should}"
end

end
Expand Down

0 comments on commit 6560832

Please sign in to comment.