From 20392f8dd960ca23cca17f52ca481b1c9ea4e514 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 8 Aug 2016 22:00:34 +0200 Subject: [PATCH] repo: split size check into too small and too big also add a hint if somebody needs to restore an archive that has too big objects. --- borg/repository.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/borg/repository.py b/borg/repository.py index 87bb4b169..686f30a7d 100644 --- a/borg/repository.py +++ b/borg/repository.py @@ -712,9 +712,14 @@ class LoggedIO: key = None else: raise TypeError("_read called with unsupported format") - if size > MAX_OBJECT_SIZE or size < fmt.size: - raise IntegrityError('Invalid segment entry size [segment {}, offset {}]'.format( - segment, offset)) + if size > MAX_OBJECT_SIZE: + # if you get this on an archive made with borg < 1.0.7 and millions of files and + # you need to restore it, you can disable this check by using "if False:" above. + raise IntegrityError('Invalid segment entry size {} - too big [segment {}, offset {}]'.format( + size, segment, offset)) + if size < fmt.size: + raise IntegrityError('Invalid segment entry size {} - too small [segment {}, offset {}]'.format( + size, segment, offset)) length = size - fmt.size data = fd.read(length) if len(data) != length: