Browse Source

fix segment entry header size check, attic issue #352

it only checked for too big sizes, but not for too small ones.
that made it die with a ValueError and not raise the appropriate IntegrityError
that gets handled in check() and triggers the repair attempt for the segment.
Thomas Waldmann 10 năm trước cách đây
mục cha
commit
6aca4694fe
1 tập tin đã thay đổi với 1 bổ sung1 xóa
  1. 1 1
      borg/repository.py

+ 1 - 1
borg/repository.py

@@ -538,7 +538,7 @@ class LoggedIO:
                 crc, size, tag = self.header_fmt.unpack(header)
             except struct.error as err:
                 raise IntegrityError('Invalid segment entry header [offset {}]: {}'.format(offset, err))
-            if size > MAX_OBJECT_SIZE:
+            if size > MAX_OBJECT_SIZE or size < self.header_fmt.size:
                 raise IntegrityError('Invalid segment entry size [offset {}]'.format(offset))
             length = size - self.header_fmt.size
             rest = fd.read(length)