diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2011-03-29 15:13:51 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2011-03-30 09:20:39 -0400 |
commit | 11f42ffa09d15417929b397fb756f00691cd9d31 (patch) | |
tree | 3d40d72989449bb54d812f5e3484aa3c8ec26686 /src/providers | |
parent | 1a881a1b5997494ef3228cf35ae0f2c7381d14ff (diff) | |
download | sssd-11f42ffa09d15417929b397fb756f00691cd9d31.tar.gz sssd-11f42ffa09d15417929b397fb756f00691cd9d31.tar.bz2 sssd-11f42ffa09d15417929b397fb756f00691cd9d31.zip |
Fall back to cn if gecos is not available
We were not fully compliant with section 5.3 of RFC 2307 which
states:
An account's GECOS field is preferably determined by a value of the
gecos attribute. If no gecos attribute exists, the value of the cn
attribute MUST be used. (The existence of the gecos attribute allows
information embedded in the GECOS field, such as a user's telephone
number, to be returned to the client without overloading the cn
attribute. It also accommodates directories where the common name
does not contain the user's full name.)
Diffstat (limited to 'src/providers')
-rw-r--r-- | src/providers/ldap/sdap_async_accounts.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/providers/ldap/sdap_async_accounts.c b/src/providers/ldap/sdap_async_accounts.c index 54416bb1..29a0f9f6 100644 --- a/src/providers/ldap/sdap_async_accounts.c +++ b/src/providers/ldap/sdap_async_accounts.c @@ -91,6 +91,15 @@ static int sdap_save_user(TALLOC_CTX *memctx, if (el->num_values == 0) gecos = NULL; else gecos = (const char *)el->values[0].data; + if (!gecos) { + /* Fall back to the user's full name */ + ret = sysdb_attrs_get_el( + attrs, + opts->user_map[SDAP_AT_USER_FULLNAME].sys_name, &el); + if (ret) goto fail; + if (el->num_values > 0) gecos = (const char *)el->values[0].data; + } + ret = sysdb_attrs_get_el(attrs, opts->user_map[SDAP_AT_USER_HOME].sys_name, &el); if (ret) goto fail; |