libuser/libuser-0.57.1-commonName.patch
Miloslav Trmač f1b8dca502 Don't default commonName to gecos if it is empty
* Thu Jan 20 2011 Miloslav Trmač <mitr@redhat.com> - 0.57.1-2
- Don't default commonName to gecos if it is empty
  Resolves: #670151
2011-01-20 14:37:10 +01:00

74 lines
2.6 KiB
Diff

2011-01-20 Miloslav Trmač <mitr@redhat.com>
* modules/ldap.c (get_ent_adds): Don't use empty gecos as a commonName
value.
* tests/ldap_test.py (Tests.testUserAdd7): New test.
diff -r d5daa92a0e78 -r 44c92c5eef75 modules/ldap.c
--- a/modules/ldap.c Thu Jan 20 13:05:59 2011 +0000
+++ b/modules/ldap.c Thu Jan 20 14:21:20 2011 +0100
@@ -1026,6 +1026,7 @@
&& lu_ent_get(ent, LU_COMMONNAME) == NULL) {
char *cn;
+ cn = NULL;
vals = lu_ent_get(ent, LU_GECOS);
if (vals != NULL) {
char *p;
@@ -1035,7 +1036,11 @@
p = strchr(cn, ',');
if (p != NULL)
*p = 0;
- } else {
+ /* Note that gecos may be empty, but
+ commonName (as a DirectoryString) is not
+ allowed to be empty. */
+ }
+ if (cn == NULL || *cn == 0) {
vals = lu_ent_get(ent, LU_USERNAME);
/* Guaranteed by lu_ldap_set() */
g_assert (vals != NULL);
diff -r d5daa92a0e78 -r 44c92c5eef75 tests/ldap_test.py
--- a/tests/ldap_test.py Thu Jan 20 13:05:59 2011 +0000
+++ b/tests/ldap_test.py Thu Jan 20 14:21:20 2011 +0100
@@ -169,6 +169,39 @@
e = self.a.initUser('user6_6')
self.assertRaises(RuntimeError, self.a.addUser, e, False, False)
+ def testUserAdd7(self):
+ # Adding commonName if it is not defined:
+ # - Explicitly set
+ e = self.a.initUser('user6_7')
+ e[libuser.COMMONNAME] = 'Common Name'
+ self.a.addUser(e, False, False)
+ del e
+ e = self.a.lookupUserByName('user6_7')
+ self.assertEqual(e[libuser.COMMONNAME], ['Common Name'])
+ # - Defaulted from GECOS
+ e = self.a.initUser('user6_8')
+ e[libuser.GECOS] = 'Full Name,Office,1234,4321'
+ self.a.addUser(e, False, False)
+ del e
+ e = self.a.lookupUserByName('user6_8')
+ self.assertEqual(e[libuser.COMMONNAME], ['Full Name'])
+ # Defaulted from user name
+ e = self.a.initUser('user6_9')
+ self.assertEqual(e[libuser.GECOS], ['user6_9'])
+ e.clear(libuser.GECOS)
+ self.assertRaises(KeyError, lambda x: x[libuser.GECOS], e)
+ self.a.addUser(e, False, False)
+ del e
+ e = self.a.lookupUserByName('user6_9')
+ self.assertEqual(e[libuser.COMMONNAME], ['user6_9'])
+ # Defaulted from user name if GECOS is empty
+ e = self.a.initUser('user6_10')
+ e[libuser.GECOS] = ''
+ self.a.addUser(e, False, False)
+ del e
+ e = self.a.lookupUserByName('user6_10')
+ self.assertEqual(e[libuser.COMMONNAME], ['user6_10'])
+
def testUserMod1(self):
# A minimal case
e = self.a.initUser('user7_1')