]> git.decadent.org.uk Git - dak.git/commitdiff
utf-8
authorJoerg Jaspert <joerg@debian.org>
Sat, 21 Feb 2009 19:42:56 +0000 (20:42 +0100)
committerJoerg Jaspert <joerg@debian.org>
Sat, 21 Feb 2009 19:42:56 +0000 (20:42 +0100)
enforce properly encoded changes/dsc files. if they do not pass
unicode() they wont get in.

Signed-off-by: Joerg Jaspert <joerg@debian.org>
dak/check_archive.py
dak/check_proposed_updates.py
dak/examine_package.py
dak/process_unchecked.py
daklib/dak_exceptions.py
daklib/utils.py

index 80782908864f5a72ed52ee5fbd55b76976fc3d1a..bed974de47293620d98d7964caed4757589dacbc 100755 (executable)
@@ -161,6 +161,9 @@ def check_dscs():
             except InvalidDscError, line:
                 utils.warn("syntax error in .dsc file '%s', line %s." % (f, line))
                 count += 1
+            except ChangesUnicodeError:
+                utils.warn("found invalid changes file, not properly utf-8 encoded")
+                count += 1
 
     if count:
         utils.warn("Found %s invalid .dsc files." % (count))
index f12df878948113576715d94d768f7d5839c3a2a6..16a9876348d24f78b80179950e338915b58057c5 100755 (executable)
@@ -176,6 +176,9 @@ def check_changes (filename):
     try:
         changes = utils.parse_changes(filename)
         files = utils.build_file_list(changes)
+    except ChangesUnicodeError:
+        utils.warn("Improperly encoded changes file, not utf-8")
+        return
     except:
         utils.warn("Error parsing changes file '%s'" % (filename))
         return
index d0e1e53aed7a0d357a67838fda6a84fe7231a977..eb602794304cf5e562f3d168386d4373e1d5a18d 100755 (executable)
@@ -470,7 +470,10 @@ def display_changes(suite, changes_filename):
     foldable_output(changes_filename, "changes", changes, norow=True)
 
 def check_changes (changes_filename):
-    changes = utils.parse_changes (changes_filename)
+    try:
+        changes = utils.parse_changes (changes_filename)
+    except ChangesUnicodeError:
+        utils.warn("Encoding problem with changes file %s" % (changes_filename))
     display_changes(changes['distribution'], changes_filename)
 
     files = utils.build_file_list(changes)
index 2e60435d1de032578c105dd20ee7bca8a1e20675..288563af9a85df0b65aa83ccd75df5a92bc9dd57 100755 (executable)
@@ -186,6 +186,9 @@ def check_changes():
     except ParseChangesError, line:
         reject("%s: parse error, can't grok: %s." % (filename, line))
         return 0
+    except ChangesUnicodeError:
+        reject("%s: changes file not proper utf-8" % (filename))
+        return 0
 
     # Parse the Files field from the .changes into another dictionary
     try:
@@ -695,6 +698,9 @@ def check_dsc():
         reject("%s: parse error, can't grok: %s." % (dsc_filename, line))
     except InvalidDscError, line:
         reject("%s: syntax error on line %s." % (dsc_filename, line))
+    except ChangesUnicodeError:
+        reject("%s: dsc file not proper utf-8." % (dsc_filename))
+
     # Build up the file list of files mentioned by the .dsc
     try:
         dsc_files.update(utils.build_file_list(dsc, is_a_dsc=1))
index d18bee1e6f1691c6940268175fddcd9fa18b1e17..33fa5ad3cacde8d62b3475914e03f4fa65ae9df4 100755 (executable)
@@ -58,7 +58,8 @@ dakerrors = {
     "NoFreeFilenameError": """Exception raised when no alternate filename was found.""",
     "TransitionsError":    """Exception raised when transitions file can't be parsed.""",
     "NoSourceFieldError":  """Exception raised - we cant find the source - wtf?""",
-    "DBUpdateError":       """Exception raised - could not update the database"""
+    "DBUpdateError":       """Exception raised - could not update the database""",
+    "ChangesUnicodeError": """Exception raised - changes file not properly utf-8 encoded"""
 } #: All dak exceptions
 
 def construct_dak_exception(name, description):
index b20a063a452d4e9d1354f8e4a19c519205855295..e0bdfe8412dca1f5f062ac249f16eb8714b04cec 100755 (executable)
@@ -234,6 +234,10 @@ def parse_changes(filename, signing_rules=0):
     changes_in = open_file(filename)
     content = changes_in.read()
     changes_in.close()
+    try:
+        unicode(content, 'utf-8')
+    except UnicodeError:
+        raise ChangesUnicodeError, "Changes file not proper utf-8"
     return parse_deb822(content, signing_rules)
 
 ################################################################################