psrp - fix hang when copying an empty file (#71649)
This commit is contained in:
parent
4d4e75ee05
commit
b615789fcc
4 changed files with 53 additions and 0 deletions
2
changelogs/fragments/psrp-copy-empty-file.yml
Normal file
2
changelogs/fragments/psrp-copy-empty-file.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- psrp - Fix hang when copying an empty file to the remote target
|
|
@ -665,6 +665,9 @@ end {
|
||||||
b64_data = base64.b64encode(b_data)
|
b64_data = base64.b64encode(b_data)
|
||||||
yield [to_text(b64_data)]
|
yield [to_text(b64_data)]
|
||||||
|
|
||||||
|
if offset == 0: # empty file
|
||||||
|
yield [""]
|
||||||
|
|
||||||
rc, stdout, stderr = self._exec_psrp_script(copy_script, read_gen(), arguments=[out_path], force_stop=True)
|
rc, stdout, stderr = self._exec_psrp_script(copy_script, read_gen(), arguments=[out_path], force_stop=True)
|
||||||
|
|
||||||
return rc, stdout, stderr, sha1_hash.hexdigest()
|
return rc, stdout, stderr, sha1_hash.hexdigest()
|
||||||
|
|
0
test/integration/targets/connection_psrp/files/empty.txt
Normal file
0
test/integration/targets/connection_psrp/files/empty.txt
Normal file
|
@ -83,3 +83,51 @@
|
||||||
- shell_unicode_output.rc == 0
|
- shell_unicode_output.rc == 0
|
||||||
- "shell_unicode_output.stdout == '\U0001F4A9\n'"
|
- "shell_unicode_output.stdout == '\U0001F4A9\n'"
|
||||||
- shell_unicode_output.stderr == ''
|
- shell_unicode_output.stderr == ''
|
||||||
|
|
||||||
|
- name: copy empty file
|
||||||
|
win_copy:
|
||||||
|
src: empty.txt
|
||||||
|
dest: C:\Windows\TEMP\empty.txt
|
||||||
|
register: copy_empty
|
||||||
|
|
||||||
|
- name: get result of copy empty file
|
||||||
|
win_stat:
|
||||||
|
path: C:\Windows\TEMP\empty.txt
|
||||||
|
get_checksum: yes
|
||||||
|
register: copy_empty_actual
|
||||||
|
|
||||||
|
- name: assert copy empty file
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- copy_empty.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
|
||||||
|
- copy_empty_actual.stat.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
|
||||||
|
- copy_empty_actual.stat.size == 0
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: fetch empty file
|
||||||
|
fetch:
|
||||||
|
src: C:\Windows\TEMP\empty.txt
|
||||||
|
dest: /tmp/empty.txt
|
||||||
|
flat: yes
|
||||||
|
register: fetch_empty
|
||||||
|
|
||||||
|
- name: get result of fetch empty file
|
||||||
|
stat:
|
||||||
|
path: /tmp/empty.txt
|
||||||
|
get_checksum: yes
|
||||||
|
register: fetch_empty_actual
|
||||||
|
delegate_to: localhost
|
||||||
|
|
||||||
|
- name: assert fetch empty file
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- fetch_empty.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
|
||||||
|
- fetch_empty_actual.stat.checksum == 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
|
||||||
|
- fetch_empty_actual.stat.size == 0
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: remove tmp file
|
||||||
|
file:
|
||||||
|
path: /tmp/empty.txt
|
||||||
|
state: absent
|
||||||
|
delegate_to: localhost
|
||||||
|
|
Loading…
Reference in a new issue