Bug#619997: python-debian: BaseVersion is not strict enough

Steve Kowalik stevenk at debian.org
Tue Mar 29 03:48:00 UTC 2011


Package: python-debian
Version: 0.1.17~bzr184~launchpad1
Severity: normal
Tags: patch

Hi,

    The BaseVersion class in debian_support contains an re_valid_version
regular expression. It isn't quite strict enough, to quote from Policy
5.6.12: "if there is no epoch then colons are not allowed.".

    Find attached a patch that corrects that.

-- System Information:
Debian Release: squeeze/sid
  APT prefers maverick-updates
  APT policy: (500, 'maverick-updates'), (500, 'maverick-security'), (500, 'maverick')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.35-25-generic (SMP w/2 CPU cores)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-debian depends on:
ii  python                    2.6.6-2ubuntu2 interactive high-level object-orie
ii  python-support            1.0.9ubuntu1   automated rebuilding support for P

Versions of packages python-debian recommends:
ii  python-apt            0.7.96.1ubuntu11.1 Python interface to libapt-pkg

Versions of packages python-debian suggests:
ii  gpgv                     1.4.10-2ubuntu2 GNU privacy guard - signature veri

-- no debconf information
-------------- next part --------------
=== modified file 'lib/debian/debian_support.py'
--- lib/debian/debian_support.py	2010-03-14 11:37:42 +0000
+++ lib/debian/debian_support.py	2011-03-29 00:55:46 +0000
@@ -94,6 +94,12 @@
         m = self.re_valid_version.match(version)
         if not m:
             raise ValueError("Invalid version string %r" % version)
+        # If there no epoch ("1:..."), then the upstream version can not
+        # contain a :.
+        if (
+            m.group("epoch") is None and 
+            m.group("upstream_version").find(':') != -1): 
+            raise ValueError("Invalid version string %r" % version)
 
         self.__full_version = version
         self.__epoch = m.group("epoch")

=== modified file 'tests/test_changelog.py'
--- tests/test_changelog.py	2010-03-14 09:16:30 +0000
+++ tests/test_changelog.py	2011-03-28 07:51:38 +0000
@@ -202,6 +202,8 @@
         self._test_version('2:1.0.4+svn26-1ubuntu1', '2', '1.0.4+svn26',
                            '1ubuntu1')
         self._test_version('2:1.0.4~rc2-1', '2', '1.0.4~rc2', '1')
+        self.assertRaises(
+            ValueError, changelog.Version, 'a1:1.8.8-070403-1~priv1')
 
     def test_version_updating(self):
         v = changelog.Version('1:1.4.1-1')



More information about the pkg-python-debian-maint mailing list