diff options
author | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-07-25 06:34:48 +0000 |
---|---|---|
committer | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-07-25 06:34:48 +0000 |
commit | c1251cdd510402ff24572e187f089c5b87cb7e98 (patch) | |
tree | f60a41f4858fe20d7e4a6b4adf122487c2f4c4cf /rdiff-backup/rdiff_backup/iterfile.py | |
parent | 57eaef4da22acb89668e7cc2de724bbe3636c20c (diff) | |
download | rdiff-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.py | 11 |
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 * |