From 1472089e7ba64e9d9e4bcb70b359bbf32b7ed179 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 5 Nov 2015 20:25:34 +0100 Subject: fix use of pread MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- passcheck.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'passcheck.py') diff --git a/passcheck.py b/passcheck.py index fc76c53..b32f5b0 100755 --- a/passcheck.py +++ b/passcheck.py @@ -100,6 +100,15 @@ def search_cmp(haystack, needle): if h == len(haystack): return None if (too_low and too_high) else (-1 if too_low else 1) +def pread_full(fd, bs, offset, output): + got_total = 0 + while got_total < bs: + got = list(os.pread(fd, bs - got_total, offset + got_total)) + if len(got) == 0: + break + got_total += len(got) + output.extend(got) + def search_file(fd, filesize, passphrase): blocksize = 4096 minimum = 0 @@ -112,7 +121,7 @@ def search_file(fd, filesize, passphrase): continues = 0 data = [] while True: - data.extend(list(os.pread(fd, blocksize, middle + continues * blocksize))) + pread_full(fd, blocksize, middle + continues * blocksize, data) if middle_low is None: middle_low = 0 if middle > 0: -- cgit v1.2.3-70-g09d2