Explorar el Código

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 hace 10 años
padre
commit
6aca4694fe
Se han modificado 1 ficheros con 1 adiciones y 1 borrados
  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)