summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/iterfile.py
diff options
context:
space:
mode:
authorben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-07-25 06:34:48 +0000
committerben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-07-25 06:34:48 +0000
commitc1251cdd510402ff24572e187f089c5b87cb7e98 (patch)
treef60a41f4858fe20d7e4a6b4adf122487c2f4c4cf /rdiff-backup/rdiff_backup/iterfile.py
parent57eaef4da22acb89668e7cc2de724bbe3636c20c (diff)
downloadrdiff-backup-c1251cdd510402ff24572e187f089c5b87cb7e98.tar.gz
Added error checking to middle of file reading, security fix for resuming
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@174 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/rdiff_backup/iterfile.py')
-rw-r--r--rdiff-backup/rdiff_backup/iterfile.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/rdiff-backup/rdiff_backup/iterfile.py b/rdiff-backup/rdiff_backup/iterfile.py
index c90229e..5549ca8 100644
--- a/rdiff-backup/rdiff_backup/iterfile.py
+++ b/rdiff-backup/rdiff_backup/iterfile.py
@@ -190,12 +190,20 @@ class FileWrappingIter:
def addfromfile(self):
"""Read a chunk from the current file and return it"""
- buf = self.currently_in_file.read(Globals.blocksize)
+ # Check file read for errors, buf = "" if find one
+ buf = Robust.check_common_error(self.read_error_handler,
+ self.currently_in_file.read,
+ [Globals.blocksize])
if not buf:
assert not self.currently_in_file.close()
self.currently_in_file = None
return C.long2str(long(len(buf))) + buf
+ def read_error_handler(self, exc, blocksize):
+ """Log error when reading from file"""
+ Log("Error '%s' reading from fileobj, truncating" % (str(exc),), 2)
+ return ""
+
def _l2s_old(self, l):
"""Convert long int to string of 7 characters"""
s = ""
@@ -237,3 +245,4 @@ class BufferedRead:
def close(self): return self.file.close()
from log import *
+from robust import *