On Tue, Feb 26, 2013 at 04:50:55PM +0100, Jakub Hrozek wrote:
On Mon, Feb 25, 2013 at 12:29:36PM +0100, Jan Engelhardt wrote:
> I have here a LDAP user entry which has this attribute
>
> loginAllowedTimeMap::
> AAAAAAAAAP///38AAP///38AAP///38AAP///38AAP///38AAAAAAAAA
>
> In the function sysdb_attrs_add_string(), called from
> sdap_attrs_add_ldap_attr(), strlen() is called on this blob, which is
> the wrong thing to do. The result of strlen is then used to populate
> the .v_length member of a struct ldb_val - and this will set it to
> zero in this case. (There is also the problem that there may not be
> a '\0' at all in the blob.)
>
> Subsequently, .v_length being 0 makes ldb_modify(), called from
> sysdb_set_entry_attr(), return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX. End
> result is that users do not get stored in the sysdb, and programs like
> `id` or `getent ...` show incomplete information.
>
> As far as involved people and I have observed, the problem is not
> present in sssd-1.5.11. AFAICS, on a source level, sssd-1.5.11 does
> not have the "sdap_attrs_add_ldap_attr" function, so that may explain
> things, and the problem might in fact be classified as regression.
Ack, but I will also squash in the attached one-liner.
Pushed Jan's patch along with the one-liner that removes the no longer
used option to master, sssd-1-9 and sssd-1-8.