[Date Prev][Date Next] [Chronological] [Thread] [Top]

Fwd: libraries/liblutil/passwd.c problem

I've committed a fix to the lmpasswd bug.

The other bug needs discussion.  Likely only reasonable
by making the various schemes optional (default to no).
Where the user wants TLS, Kerberos, LM, and crypt(3),
then they should use versions of all dependent on one
DES implementation (OpenSSL).  I note that there are
patches for Heimdal for it to use OpenSSL.


>From: Mei-Hui Su  <mei@ISI.EDU>
>Date: Wed, 17 Jan 2001 14:30:31 -0800 (PST)
>To: openldap-bugs@OpenLDAP.org
>Subject: libraries/liblutil/passwd.c problem
>Comment: openldap-bugs mailing list <http://www.OpenLDAP.org/lists/>
>List-Archive: <http://www.OpenLDAP.org/lists/openldap-bugs>
>  I grabbed the latest copy of ldap from the cvs and tried to
>compile it on sun solaris 5.7. The compiler complained about
>a static function declared/defined within another static function
>in libraries/liblutil/passwd.c and also a conflict in des_encrypt
>declarations (I am using openssl).
>"passwd.c", line 1038: warning: assignment type mismatch:
>        pointer to char "=" pointer to uchar
>"passwd.c", line 1114: syntax error before or at: {
>"passwd.c", line 1117: undefined symbol: key
>"passwd.c", line 1117: undefined symbol: lmPasswd
>and the code looks like this,
>static struct berval *hash_lanman(
>        const struct pw_scheme *scheme,
>        const struct berval *passwd )
>        static void lmPasswd_to_key(const unsigned char *lmPasswd, des_cblock
> *key)
>        {
>                /* make room for parity bits */
>                ((char *)key)[0] = lmPasswd[0];
>                ((char *)key)[1] = ((lmPasswd[0]&0x01)<<7) | (lmPasswd[1]>>1)
>                ((char *)key)[2] = ((lmPasswd[1]&0x03)<<6) | (lmPasswd[2]>>2)
>                ((char *)key)[3] = ((lmPasswd[2]&0x07)<<5) | (lmPasswd[3]>>3)
>  Moving the inner function out solves this problem. As for the other problem,
>it has been reported already. So, I just worked around it.