psrp - fix hang when copying an empty file (#71649)

This commit is contained in:
Jordan Borean 2020-09-05 14:57:15 +10:00 committed by GitHub
parent 4d4e75ee05
commit b615789fcc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- psrp - Fix hang when copying an empty file to the remote target

View file

@ -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()

View 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