1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-22 22:22:27 +00:00

check unpacked data from RPC for tuple type and correct length, fixes #127

This commit is contained in:
Thomas Waldmann 2015-03-09 21:59:10 +01:00
parent 4ab4ecc7af
commit becae42618

View file

@ -44,7 +44,10 @@ def serve(self):
if not data:
return
unpacker.feed(data)
for type, msgid, method, args in unpacker:
for unpacked in unpacker:
if not (isinstance(unpacked, tuple) and len(unpacked) == 4):
raise Exception("Unexpected RPC data format.")
type, msgid, method, args = unpacked
method = method.decode('ascii')
try:
try:
@ -172,7 +175,10 @@ def fetch_from_cache(args):
if not data:
raise ConnectionClosed()
self.unpacker.feed(data)
for type, msgid, error, res in self.unpacker:
for unpacked in self.unpacker:
if not (isinstance(unpacked, tuple) and len(unpacked) == 4):
raise Exception("Unexpected RPC data format.")
type, msgid, error, res = unpacked
if msgid in self.ignore_responses:
self.ignore_responses.remove(msgid)
else:
@ -312,4 +318,4 @@ def get_many(self, keys):
def cache_if_remote(repository):
if isinstance(repository, RemoteRepository):
return RepositoryCache(repository)
return repository
return repository