Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package twextpy An important bug had been identified against calendarserver (Bug#923230), the fix for which lies in this package. I have also added a minor decorator as it is the pattern used for other Directory Services. As I have written the NSS Directory Service, I have high confidence in the fix for it. I have also tested my changes for calendarserver with NSS Directory Service with the newly built package and it is working fine. I am also attaching the source diff with this report. unblock twextpy/1:0.1~git20161216.0.b90293c-1 -- System Information: Debian Release: 9.8 APT prefers stable APT policy: (600, 'stable'), (500, 'stable-updates') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.9.0-8-amd64 (SMP w/4 CPU cores) Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8), LANGUAGE=en_IN:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)
diff -Nru twextpy-0.1~git20161216.0.b90293c/debian/changelog twextpy-0.1~git20161216.0.b90293c/debian/changelog --- twextpy-0.1~git20161216.0.b90293c/debian/changelog 2017-08-26 12:23:56.000000000 +0530 +++ twextpy-0.1~git20161216.0.b90293c/debian/changelog 2019-03-18 01:00:34.000000000 +0530 @@ -1,3 +1,10 @@ +twextpy (1:0.1~git20161216.0.b90293c-2) unstable; urgency=low + + * Removed constructors for NssUserRecord and NssGroupRecord classes allowing + them to fallback to the constructor of their parent class (Closes: #923230) + + -- Rahul Amaram <amaramra...@users.sourceforge.net> Mon, 18 Mar 2019 01:00:34 +0530 + twextpy (1:0.1~git20161216.0.b90293c-1) unstable; urgency=low * New upstream version from master branch commit diff -Nru twextpy-0.1~git20161216.0.b90293c/debian/patches/nss.patch twextpy-0.1~git20161216.0.b90293c/debian/patches/nss.patch --- twextpy-0.1~git20161216.0.b90293c/debian/patches/nss.patch 2017-08-26 12:23:56.000000000 +0530 +++ twextpy-0.1~git20161216.0.b90293c/debian/patches/nss.patch 2019-03-18 01:00:34.000000000 +0530 @@ -2,7 +2,7 @@ calendarserver package. --- /dev/null +++ b/twext/who/nss.py -@@ -0,0 +1,201 @@ +@@ -0,0 +1,208 @@ +## +# Copyright (c) 2016 Rahul Amaram <amaramra...@users.sourceforge.net> +# @@ -31,13 +31,15 @@ +import PAM +from time import time +from uuid import UUID ++from zope.interface import implementer + +from twisted.internet.defer import succeed +from twext.python.log import Logger +from twistedcaldav.directory.util import uuidFromName +from .idirectory import ( + RecordType, -+ FieldName ++ FieldName, ++ IPlaintextPasswordVerifier +) +from .index import ( + DirectoryService, @@ -111,7 +113,7 @@ + records = set() + for result in pwd.getpwall(): + if self._isValidUid(result[2]): -+ record = NssUserRecord( ++ record = NssUserRecord.fromUserName( + service=self, + userName=result[0], + gecos=result[4], @@ -121,7 +123,7 @@ + for result in grp.getgrall(): + if result[0].startswith(self.groupPrefix) and \ + self._isValidGid(result[2]): -+ record = NssGroupRecord( ++ record = NssGroupRecord.fromGroupName( + service=self, + groupName=result[0], + members=result[3] @@ -138,11 +140,14 @@ + _lastRefresh = now + + ++@implementer(IPlaintextPasswordVerifier) +class NssUserRecord(DirectoryRecord): + """ + NSS Users implementation of L{IDirectoryRecord}. + """ -+ def __init__(self, service, userName, gecos): ++ ++ @classmethod ++ def fromUserName(cls, service, userName, gecos): + uid = _generateUID(service.guid, "users", userName) + guid = UUID(uid) + shortNames = (unicode(userName, "utf-8"),) @@ -154,7 +159,7 @@ + log.debug("Creating user record with uid: %r, guid: %r, " + "shortNames: %r, fullNames: %r, emailAddresses: %r" % + (uid, guid, shortNames, fullNames, emailAddresses)) -+ super(NssUserRecord, self).__init__(service, dict([ ++ return cls(service, dict([ + (FieldName.recordType, service.recordType.user), + (FieldName.uid, uid), + (FieldName.guid, guid), @@ -185,7 +190,9 @@ + """ + NSS Groups implementation of L{IDirectoryRecord}. + """ -+ def __init__(self, service, groupName, members=()): ++ ++ @classmethod ++ def fromGroupName(cls, service, groupName, members=()): + groupNameWithoutPrefix = groupName.replace(service.groupPrefix, '', 1) + uid = _generateUID(service.guid, "groups", groupNameWithoutPrefix) + guid = UUID(uid) @@ -195,7 +202,7 @@ + log.debug("Creating group record with uid: %r, guid: %r, " + "shortNames: %r, memberUIDs: %r" % + (uid, guid, shortNames, memberUIDs)) -+ super(NssGroupRecord, self).__init__(service, dict([ ++ return cls(service, dict([ + (FieldName.recordType, service.recordType.group), + (FieldName.uid, uid), + (FieldName.guid, guid),