From 1271680e053c92528ade608def345cb5a88d4cae Mon Sep 17 00:00:00 2001 From: Thomas Viehmann Date: Fri, 18 Apr 2008 20:34:12 +0000 Subject: [PATCH] fix utils.py/build_file_list to parse (and reject) extended .dsc format --- daklib/utils.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/daklib/utils.py b/daklib/utils.py index 8b80f246..16cc1ff1 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -43,6 +43,7 @@ re_taint_free = re.compile(r"^[-+~/\.\w]+$") re_parse_maintainer = re.compile(r"^\s*(\S.*\S)\s*\<([^\>]+)\>") re_srchasver = re.compile(r"^(\S+)\s+\((\S+)\)$") +re_verwithext = re.compile(r"^(\d+)(?:\.(\d+))(?:\s+\((\S+)\))?$") changes_parse_error_exc = "Can't parse line in .changes file" invalid_dsc_format_exc = "Invalid .dsc file" @@ -237,11 +238,17 @@ def build_file_list(changes, is_a_dsc=0, field="files", hashname="md5sum"): raise no_files_exc # Make sure we recognise the format of the Files: field - format = changes.get("format", "0.0").split(".",1) - if len(format) == 2: - format = int(format[0]), int(format[1]) + format = re_verwithext.search(changes.get("format", "0.0")) + if not format: + raise nk_format_exc, "%s" % (changes.get("format","0.0")) + + format = format.groups() + if format[1] == None: + format = int(float(format[0])), 0, format[2] else: - format = int(float(format[0])), 0 + format = int(format[0]), int(format[1]), format[2] + if format[2] == None: + format = format[:2] if is_a_dsc: if format != (1,0): -- 2.39.2