1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-03-15 00:21:56 +00:00

check msgpack version, terminate for unsupported versions

This commit is contained in:
Thomas Waldmann 2019-02-02 23:52:16 +01:00
parent 422d9cf170
commit 18c9feb7e3
4 changed files with 18 additions and 4 deletions

View file

@ -49,8 +49,10 @@ install_requires = [
# if you can't satisfy the above requirement, these are versions that might
# also work ok, IF you make sure to use the COMPILED version of msgpack-python,
# NOT the PURE PYTHON fallback implementation: ==0.5.1, ==0.5.4
# using any other version is not supported by borg development, feel free to
# do it on your own risk (and after own testing).
#
# Please note:
# using any other version is not supported by borg development and
# any feedback related to issues caused by this will be ignored.
]
# note for package maintainers: if you package borgbackup for distribution,

View file

@ -55,7 +55,7 @@ from .helpers import Manifest, AI_HUMAN_SORT_KEYS
from .helpers import hardlinkable
from .helpers import StableDict
from .helpers import check_python, check_extension_modules
from .helpers import dir_is_tagged, is_slow_msgpack, yes, sysinfo
from .helpers import dir_is_tagged, is_slow_msgpack, is_supported_msgpack, yes, sysinfo
from .helpers import log_multi
from .helpers import signal_handler, raising_signal_handler, SigHup, SigTerm
from .helpers import ErrorIgnoringTextIOWrapper
@ -4187,6 +4187,11 @@ class Archiver:
if args.show_version:
logging.getLogger('borg.output.show-version').info('borgbackup version %s' % __version__)
self.prerun_checks(logger)
if not is_supported_msgpack():
logger.error("You do not have a supported version of the msgpack python package installed. Terminating.")
logger.error("This should never happen as specific, supported versions are required by our setup.py.")
logger.error("Do not contact borgbackup support about this.")
return set_ec(EXIT_ERROR)
if is_slow_msgpack():
logger.warning("Using a pure-python msgpack! This will result in lower performance.")
if args.debug_profile:

View file

@ -18,7 +18,7 @@ from .progress import * # NOQA
from .time import * # NOQA
from .yes import * # NOQA
from .msgpack import is_slow_msgpack, int_to_bigint, bigint_to_int, get_limited_unpacker
from .msgpack import is_slow_msgpack, is_supported_msgpack, int_to_bigint, bigint_to_int, get_limited_unpacker
from . import msgpack
"""

View file

@ -169,6 +169,13 @@ def is_slow_msgpack():
return msgpack.Packer is msgpack.fallback.Packer
def is_supported_msgpack():
# DO NOT CHANGE OR REMOVE! See also requirements and comments in setup.py.
import msgpack
return (0, 5, 6) <= msgpack.version <= (0, 6, 0) and \
msgpack.version not in [(0, 5, 7), (0, 5, 8), (0, 5, 9)]
def get_limited_unpacker(kind):
"""return a limited Unpacker because we should not trust msgpack data received from remote"""
args = dict(use_list=False, # return tuples, not lists