fixed memoryerror when coping huge file (#16392)
* fixed * support both python 2 and 3
This commit is contained in:
parent
84c1697271
commit
adea1f2b80
2 changed files with 8 additions and 2 deletions
|
@ -380,11 +380,11 @@ class DataLoader():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(to_bytes(real_path), 'rb') as f:
|
with open(to_bytes(real_path), 'rb') as f:
|
||||||
data = f.read()
|
if self._vault.is_encrypted(f):
|
||||||
if self._vault.is_encrypted(data):
|
|
||||||
# if the file is encrypted and no password was specified,
|
# if the file is encrypted and no password was specified,
|
||||||
# the decrypt call would throw an error, but we check first
|
# the decrypt call would throw an error, but we check first
|
||||||
# since the decrypt function doesn't know the file name
|
# since the decrypt function doesn't know the file name
|
||||||
|
data = f.read()
|
||||||
if not self._vault_password:
|
if not self._vault_password:
|
||||||
raise AnsibleParserError("A vault password must be specified to decrypt %s" % file_path)
|
raise AnsibleParserError("A vault password must be specified to decrypt %s" % file_path)
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,12 @@ class VaultLib:
|
||||||
:returns: True if it is recognized. Otherwise, False.
|
:returns: True if it is recognized. Otherwise, False.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if hasattr(data, 'read'):
|
||||||
|
current_position = data.tell()
|
||||||
|
header_part = data.read(len(b_HEADER))
|
||||||
|
data.seek(current_position)
|
||||||
|
return self.is_encrypted(header_part)
|
||||||
|
|
||||||
if to_bytes(data, errors='strict', encoding='utf-8').startswith(b_HEADER):
|
if to_bytes(data, errors='strict', encoding='utf-8').startswith(b_HEADER):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Reference in a new issue