* 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
74 lines
2.6 KiB
Diff
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')
|