]> git.decadent.org.uk Git - dak.git/commitdiff
fix utils.py/build_file_list to parse (and reject) extended .dsc format
authorThomas Viehmann <tv@beamnet.de>
Fri, 18 Apr 2008 20:34:12 +0000 (20:34 +0000)
committerThomas Viehmann <tv@beamnet.de>
Fri, 18 Apr 2008 20:34:12 +0000 (20:34 +0000)
daklib/utils.py

index 8b80f2466065fcc38831793d103d9d7b6fb01b06..16cc1ff16ed54df640d0ccbfb1da8e5879e4eef2 100755 (executable)
@@ -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):