mirror of
https://github.com/rapid7/metasploit-payloads
synced 2024-12-08 23:33:07 +01:00
Fixes #8732 by reading until EOF reached.
* use a lambda for cleaner iterator. * also disables buffering, since we are reading byte-by-byte in the first place and maintaining our own buffer (#data).
This commit is contained in:
parent
159beef9a9
commit
50899d608d
@ -158,15 +158,10 @@ class STDProcessBuffer(threading.Thread):
|
||||
self.data_lock = threading.RLock()
|
||||
|
||||
def run(self):
|
||||
while self.is_alive():
|
||||
byte = self.std.read(1)
|
||||
for byte in iter(lambda: self.std.read(1), ''):
|
||||
self.data_lock.acquire()
|
||||
self.data += byte
|
||||
self.data_lock.release()
|
||||
data = self.std.read()
|
||||
self.data_lock.acquire()
|
||||
self.data += data
|
||||
self.data_lock.release()
|
||||
|
||||
def is_read_ready(self):
|
||||
return len(self.data) != 0
|
||||
@ -185,6 +180,7 @@ class STDProcessBuffer(threading.Thread):
|
||||
|
||||
class STDProcess(subprocess.Popen):
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs['bufsize'] = 0 # disable buffering on stdout/err
|
||||
subprocess.Popen.__init__(self, *args, **kwargs)
|
||||
|
||||
def start(self):
|
||||
|
Loading…
Reference in New Issue
Block a user