Fixed: SVN errors lead to svn username/password being displayed to end users (#1368).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1493 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
cd824c6ecf
commit
a5ee8f8986
|
@ -118,7 +118,7 @@ module Redmine
|
||||||
def logger
|
def logger
|
||||||
RAILS_DEFAULT_LOGGER
|
RAILS_DEFAULT_LOGGER
|
||||||
end
|
end
|
||||||
|
|
||||||
def shellout(cmd, &block)
|
def shellout(cmd, &block)
|
||||||
logger.debug "Shelling out: #{cmd}" if logger && logger.debug?
|
logger.debug "Shelling out: #{cmd}" if logger && logger.debug?
|
||||||
begin
|
begin
|
||||||
|
@ -127,11 +127,22 @@ module Redmine
|
||||||
block.call(io) if block_given?
|
block.call(io) if block_given?
|
||||||
end
|
end
|
||||||
rescue Errno::ENOENT => e
|
rescue Errno::ENOENT => e
|
||||||
|
msg = strip_credential(e.message)
|
||||||
# The command failed, log it and re-raise
|
# The command failed, log it and re-raise
|
||||||
logger.error("SCM command failed: #{cmd}\n with: #{e.message}")
|
logger.error("SCM command failed: #{strip_credential(cmd)}\n with: #{msg}")
|
||||||
raise CommandFailed.new(e.message)
|
raise CommandFailed.new(msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Hides username/password in a given command
|
||||||
|
def self.hide_credential(cmd)
|
||||||
|
q = (RUBY_PLATFORM =~ /mswin/ ? '"' : "'")
|
||||||
|
cmd.to_s.gsub(/(\-\-(password|username))\s+(#{q}[^#{q}]+#{q}|[^#{q}]\S+)/, '\\1 xxxx')
|
||||||
|
end
|
||||||
|
|
||||||
|
def strip_credential(cmd)
|
||||||
|
self.class.hide_credential(cmd)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Entries < Array
|
class Entries < Array
|
||||||
|
|
Loading…
Reference in New Issue