ensure ssh retry respects no log (#49569) (#49724)

* ensure ssh retry respects no log (#49569)


(cherry picked from commit ba4c2ebeac)
This commit is contained in:
Brian Coca 2018-12-10 14:49:16 -05:00 committed by Toshio Kuratomi
parent 961382bf5e
commit 0954942dfd
2 changed files with 13 additions and 4 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- Respect no_log on retry and high verbosity (CVE-2018-16876)

View file

@ -335,11 +335,14 @@ def _ssh_retry(func):
try: try:
try: try:
return_tuple = func(self, *args, **kwargs) return_tuple = func(self, *args, **kwargs)
display.vvv(return_tuple, host=self.host) if self._play_context.no_log:
display.vvv('rc=%s, stdout & stderr censored due to no log' % return_tuple[0], host=self.host)
else:
display.vvv(return_tuple, host=self.host)
# 0 = success # 0 = success
# 1-254 = remote command return code # 1-254 = remote command return code
# 255 could be a failure from the ssh command itself # 255 could be a failure from the ssh command itself
except (AnsibleControlPersistBrokenPipeError) as e: except (AnsibleControlPersistBrokenPipeError):
# Retry one more time because of the ControlPersist broken pipe (see #16731) # Retry one more time because of the ControlPersist broken pipe (see #16731)
cmd = args[0] cmd = args[0]
if self._play_context.password and isinstance(cmd, list): if self._play_context.password and isinstance(cmd, list):
@ -357,8 +360,12 @@ def _ssh_retry(func):
break break
if SSH_ERROR: if SSH_ERROR:
raise AnsibleConnectionFailure("Failed to connect to the host via ssh: %s" msg = "Failed to connect to the host via ssh: "
% to_native(return_tuple[2])) if self._play_context.no_log:
msg += '<error censored due to no log>'
else:
msg += to_native(return_tuple[2])
raise AnsibleConnectionFailure(msg)
break break