mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-07 20:00:20 +00:00
immutable: raise LayoutInvalid instead of struct.error when a share is truncated
To fix this error from the Windows buildslave: [ERROR]: allmydata.test.test_immutable.Test.test_download_from_only_3_remaining_shares Traceback (most recent call last): File "C:\Documents and Settings\buildslave\windows-native-tahoe\windows\build\src\allmydata\immutable\download.py", line 135, in _bad raise NotEnoughSharesError("ran out of peers, last error was %s" % (f,)) allmydata.interfaces.NotEnoughSharesError: ran out of peers, last error was [Failure instance: Traceback: <class 'struct.error'>: unpack requires a string argument of length 4 c:\documents and settings\buildslave\windows-native-tahoe\windows\build\support\lib\site-packages\foolscap-0.3.2-py2.5.egg\foolscap\call.py:667:_done c:\documents and settings\buildslave\windows-native-tahoe\windows\build\support\lib\site-packages\foolscap-0.3.2-py2.5.egg\foolscap\call.py:53:complete c:\Python25\lib\site-packages\twisted\internet\defer.py:239:callback c:\Python25\lib\site-packages\twisted\internet\defer.py:304:_startRunCallbacks --- <exception caught here> --- c:\Python25\lib\site-packages\twisted\internet\defer.py:317:_runCallbacks C:\Documents and Settings\buildslave\windows-native-tahoe\windows\build\src\allmydata\immutable\layout.py:374:_got_length C:\Python25\lib\struct.py:87:unpack ] ===============================================================================
This commit is contained in:
parent
5a21638853
commit
21e0ff97f2
@ -371,6 +371,8 @@ class ReadBucketProxy:
|
|||||||
offset = self._offsets['uri_extension']
|
offset = self._offsets['uri_extension']
|
||||||
d = self._read(offset, self._fieldsize)
|
d = self._read(offset, self._fieldsize)
|
||||||
def _got_length(data):
|
def _got_length(data):
|
||||||
|
if len(data) != 4:
|
||||||
|
raise LayoutInvalid("not enough bytes to encode URI length -- %d" % (len(data),))
|
||||||
length = struct.unpack(self._fieldstruct, data)[0]
|
length = struct.unpack(self._fieldstruct, data)[0]
|
||||||
if length >= 2**31:
|
if length >= 2**31:
|
||||||
# URI extension blocks are around 419 bytes long, so this must be corrupted.
|
# URI extension blocks are around 419 bytes long, so this must be corrupted.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user