[Secure-testing-commits] r29229 - bin lib/python

Holger Levsen holger at moszumanska.debian.org
Fri Oct 3 07:39:02 UTC 2014


Author: holger
Date: 2014-10-03 07:39:01 +0000 (Fri, 03 Oct 2014)
New Revision: 29229

Modified:
   bin/tracker_service.py
   lib/python/bugs.py
   lib/python/debian_support.py
   lib/python/security_db.py
Log:
Revert "WIP: improve backports support. (this is really WIP: see debian_support.py)"

This reverts commit a47339bf5db9ec1be2709e1e687c2b5d5df313e7.

Modified: bin/tracker_service.py
===================================================================
--- bin/tracker_service.py	2014-10-03 07:36:36 UTC (rev 29228)
+++ bin/tracker_service.py	2014-10-03 07:39:01 UTC (rev 29229)
@@ -376,12 +376,12 @@
                        self.make_debian_bug_list(url, debian_bugs))
 
             if not bug.not_for_us:
-                for (release, subrelease, status, reason) in bug.getStatus(cursor):
+                for (release, status, reason) in bug.getStatus(cursor):
                     if status == 'undetermined':
                         reason = self.make_purple(reason)
                     elif status <> 'fixed':
                         reason = self.make_red(reason)
-                    yield B('Debian/%s %s' % (release, subrelease)), reason
+                    yield B('Debian/%s' % release), reason
 
         page.append(make_table(gen_header()))
 

Modified: lib/python/bugs.py
===================================================================
--- lib/python/bugs.py	2014-10-03 07:36:36 UTC (rev 29228)
+++ lib/python/bugs.py	2014-10-03 07:39:01 UTC (rev 29229)
@@ -374,10 +374,10 @@
     def getStatus(self, cursor):
         """Calculate bug status.
 
-        Returns list of tuples (RELEASE, SUBRELEASE, STATUS, REASON)."""
+        Returns list of tuples (RELEASE, STATUS, REASON)."""
         
         return list(cursor.execute(
-            """SELECT release, subrelease, status, reason
+            """SELECT release, status, reason
             FROM bug_status WHERE bug_name = ?""",
             (self.name,)))
 

Modified: lib/python/debian_support.py
===================================================================
--- lib/python/debian_support.py	2014-10-03 07:36:36 UTC (rev 29228)
+++ lib/python/debian_support.py	2014-10-03 07:39:01 UTC (rev 29229)
@@ -71,7 +71,7 @@
 
 # This regular expression is used to strip ~bpo1 and ~volatile1 from
 # version numbers before they are compared.
-_version_normalize_regexp = re.compile(r"~(?:xxxxxxxxxxxxxxxx|yyyyyyyyyyyyyyyy)[0-9.+]+$")
+_version_normalize_regexp = re.compile(r"~(?:bpo|volatile)[0-9.+]+$")
 
 class Version:
     """Version class which uses the original APT comparison algorithm.

Modified: lib/python/security_db.py
===================================================================
--- lib/python/security_db.py	2014-10-03 07:36:36 UTC (rev 29228)
+++ lib/python/security_db.py	2014-10-03 07:39:01 UTC (rev 29229)
@@ -271,12 +271,11 @@
         cursor.execute("""CREATE TABLE bug_status
         (bug_name TEXT NOT NULL,
          release TEXT NOT NULL,
-         subrelease TEXT NOT NULL,
          status TEXT NOT NULL
              CHECK (status IN ('vulnerable', 'fixed', 'unknown', 'undetermined',
                                'partially-fixed', 'todo')),
          reason TEXT NOT NULL,
-         PRIMARY KEY (bug_name, release, subrelease))""")
+         PRIMARY KEY (bug_name, release))""")
 
         cursor.execute("""CREATE TABLE source_package_status
         (bug_name TEXT NOT NULL,
@@ -1175,24 +1174,24 @@
                     pkgs += ("packages %s may be vulnerable but need to be checked."
                              % ', '.join(undetermined_packages))
             cursor.execute("""INSERT INTO bug_status
-                (bug_name, release, subrelease, status, reason)
-                VALUES (?, 'unstable', '', ?, ?)""", (bug_name, status, pkgs))
+                (bug_name, release, status, reason)
+                VALUES (?, 'unstable', ?, ?)""", (bug_name, status, pkgs))
         elif unimportant_packages:
             if len(unimportant_packages) == 1:
                 pkgs = "package %s is vulnerable; however, the security impact is unimportant." % unimportant_packages[0]
             else:
                 pkgs = "packages %s are vulnerable; however, the security impact is unimportant." % (', '.join(unimportant_packages))
             cursor.execute("""INSERT INTO bug_status
-                (bug_name, release, subrelease, status, reason)
-                VALUES (?, 'unstable', '', 'fixed', ?)""", (bug_name, pkgs))
+                (bug_name, release, status, reason)
+                VALUES (?, 'unstable', 'fixed', ?)""", (bug_name, pkgs))
         else:
             if have_something:
                 status = "not vulnerable."
             else:
                 status = "not known to be vulnerable."
             cursor.execute("""INSERT INTO bug_status
-                (bug_name, release, subrelease, status, reason)
-                VALUES (?, 'unstable', '', 'fixed', ?)""",
+                (bug_name, release, status, reason)
+                VALUES (?, 'unstable', 'fixed', ?)""",
                       (bug_name, status))
 
     def _calcTesting(self, cursor, bug_name, suite, nickname):
@@ -1202,85 +1201,85 @@
         # note/release/subrelease triple, but we should check that
         # here.
 
-        status = {'' : {}, 'security' : {}, 'lts' :    {}, 'backports' : {}}
+        status = {'' : {}, 'security' : {}, 'lts' :	{}, 'backports' : {}}
         for (package, note, subrelease, vulnerable, urgency) in cursor.execute(
             """SELECT DISTINCT sp.name, n.id, sp.subrelease,
             st.vulnerable, n.urgency
             FROM source_package_status AS st,
             source_packages AS sp, package_notes AS n
             WHERE st.bug_name = ? AND sp.rowid = st.package
-            AND sp.release = ?
+            AND sp.release = ? AND sp.subrelease IN ('', 'security', 'lts', 'backports')
             AND n.bug_name = st.bug_name AND n.package = sp.name
             ORDER BY sp.name""",
             (bug_name, nickname)):
             status[subrelease][(package, note)] = (vulnerable,urgency)
-	    if package == "bind9":
-		print package, note, subrelease, vulnerable, urgency
 
-            # Check if any packages in plain testing are vulnerable, and
-            # if all of those have been fixed in the security archive.
-            fixed_in_security = False
-            fixed_in_lts = False
-            unfixed_pkgs = {}
-            undet_pkgs = {}
-            unimp_pkgs = {}
+        # Check if any packages in plain testing are vulnerable, and
+        # if all of those have been fixed in the security archive.
+        fixed_in_security = True
+        unfixed_pkgs = {}
+        undet_pkgs = {}
+        unimp_pkgs = {}
+        for ((package, note), (vulnerable, urgency)) in status[''].items():
             if vulnerable == 1:
                 if urgency == 'unimportant':
                     unimp_pkgs[package] = True
                 else:
                     unfixed_pkgs[package] = True
                 if status['security'].get((package, note), True):
-                    fixed_in_security = True
+                    fixed_in_security = False
                 elif status['lts'].get((package, note), True):
-                    fixed_in_lts = True
+                    fixed_in_security = False
+                elif status['backports'].get((package, note), True):
+                    fixed_in_security = False
             elif vulnerable == 2:
                 undet_pkgs[package] = True
 
-            unfixed_pkgs = unfixed_pkgs.keys()
-            unfixed_pkgs.sort()
-            undet_pkgs = undet_pkgs.keys()
-            undet_pkgs.sort()
-            unimp_pkgs = unimp_pkgs.keys()
-            unimp_pkgs.sort()
+        unfixed_pkgs = unfixed_pkgs.keys()
+        unfixed_pkgs.sort()
+        undet_pkgs = undet_pkgs.keys()
+        undet_pkgs.sort()
+        unimp_pkgs = unimp_pkgs.keys()
+        unimp_pkgs.sort()
 
-            pkgs = ""
-            result = "undetermined"
-            if len(unfixed_pkgs) == 0 and len(undet_pkgs) == 0:
-                if len(status[subrelease].keys()) == 0:
-                    pkgs += "not known to be vulnerable."
-                else:
-                    pkgs += "not vulnerable."
-                result = "fixed"
-            if len(unfixed_pkgs) > 0:
-                if len(unfixed_pkgs) == 1:
-                    pkgs += "package " + unfixed_pkgs[0] + " is "
-                else:
-                    pkgs += "packages " + ", ".join(unfixed_pkgs) + " are "
-                if fixed_in_security:
-                    pkgs = "%sfixed in %s-security. " % (pkgs, suite)
+        pkgs = ""
+        result = "undetermined"
+        if len(unfixed_pkgs) == 0 and len(undet_pkgs) == 0:
+            if len(status[''].keys()) == 0:
+                pkgs += "not known to be vulnerable."
+            else:
+                pkgs += "not vulnerable."
+            result = "fixed"
+        if len(unfixed_pkgs) > 0:
+            if len(unfixed_pkgs) == 1:
+                pkgs += "package " + unfixed_pkgs[0] + " is "
+            else:
+                pkgs += "packages " + ", ".join(unfixed_pkgs) + " are "
+            if fixed_in_security:
+                pkgs = "%sfixed in %s-security. " % (pkgs, suite)
+                if suite == "stable":
                     result = "fixed"
-                elif fixed_in_lts:
-                    pkgs = "%sfixed in %s-lts. " % (pkgs, suite)
-                    result = "fixed"
                 else:
-                    pkgs += "vulnerable. "
-                    result = "vulnerable"
-            if len(undet_pkgs) > 0:
-                if len(undet_pkgs) == 1:
-                    pkgs += "package " + undet_pkgs[0] + " may be vulnerable but needs to be checked."
-                else:
-                    pkgs += "packages " + ", ".join(undet_pkgs) + " may be vulnerable but need to be checked."
-            if len(unimp_pkgs) > 0 and len(undet_pkgs) == 0 and len(unfixed_pkgs) == 0:
-                result = "fixed"
-                if len(unimp_pkgs) == 1:
-                    pkgs = "package %s is vulnerable; however, the security impact is unimportant." % unimp_pkgs[0]
-                else:
-                    pkgs = "packages %s are vulnerable; however, the security impact is unimportant." % (', '.join(unimp_pkgs))
+                    result = "partially-fixed"
+            else:
+                pkgs += "vulnerable. "
+                result = "vulnerable"
+        if len(undet_pkgs) > 0:
+            if len(undet_pkgs) == 1:
+                pkgs += "package " + undet_pkgs[0] + " may be vulnerable but needs to be checked."
+            else:
+                pkgs += "packages " + ", ".join(undet_pkgs) + " may be vulnerable but need to be checked."
+        if len(unimp_pkgs) > 0 and len(undet_pkgs) == 0 and len(unfixed_pkgs) == 0:
+            result = "fixed"
+            if len(unimp_pkgs) == 1:
+                pkgs = "package %s is vulnerable; however, the security impact is unimportant." % unimp_pkgs[0]
+            else:
+                pkgs = "packages %s are vulnerable; however, the security impact is unimportant." % (', '.join(unimp_pkgs))
 
-            cursor.execute("""INSERT INTO bug_status
-            (bug_name, release, subrelease, status, reason)
-            VALUES (?, ?, ?, ?, ?)""",
-                  (bug_name, suite, '', result, pkgs))
+        cursor.execute("""INSERT INTO bug_status
+        (bug_name, release, status, reason)
+        VALUES (?, ?, ?, ?)""",
+              (bug_name, suite, result, pkgs))
 
     def calculateDebsecan0(self, release):
         """Create data for the debsecan tool (VERSION 0 format)."""




More information about the Secure-testing-commits mailing list