From: Kurt Zeilenga Date: Sat, 17 Jun 2000 16:16:13 +0000 (+0000) Subject: A quick fix for ITS#598... crypt(3) crashes X-Git-Tag: OPENLDAP_REL_ENG_1_2_12~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9820da8c100ead4db658bdad24ecb0d8536aa4b1;p=thirdparty%2Fopenldap.git A quick fix for ITS#598... crypt(3) crashes --- diff --git a/CHANGES b/CHANGES index 604ca89b35..d6f1e740b4 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ Changes included in OpenLDAP 1.2.12 Engineering Fixed ldapsearch uninitialized fp bug Fixed Pth initialization bug Fixed libldap/add mod_bvalues typo + Fixed ldappasswd crypt(3) crash (ITD#598) Build Environment Remove extra Digital UNIX symbol (ITS#590) Ignore make clean rm failure diff --git a/clients/tools/ldappasswd.c b/clients/tools/ldappasswd.c index 2e2ec5eaf1..e73a84b627 100644 --- a/clients/tools/ldappasswd.c +++ b/clients/tools/ldappasswd.c @@ -194,7 +194,11 @@ hash_crypt (const char *pw_in, Salt * salt) crypted_pw = crypt (pw_in, (char *)lsalt.salt); free (lsalt.salt); } - return (STRDUP (crypted_pw)); + + if( crypted_pw == NULL || crypted_pw[0] = '\0' ) + return NULL; + + return STRDUP(crypted_pw); } #endif @@ -283,12 +287,16 @@ modify_dn (LDAP * ld, char *targetdn, char *pwattr, char *oldpw, hashed_pw = hashes[htype].func (newpw, salt->len ? salt : NULL); /* return salt back to it's original state */ - if (want_salt) - { + if (want_salt) { free (salt->salt); salt->salt = NULL; } + if( hashed_pw == NULL || hashed_pw[0] == '\0' ) { + free( hashed_pw ); + return 1; + } + buf = (char *)malloc (hashes[htype].namesz + 3 + strlen (hashed_pw)); if (htype) sprintf (buf, "{%s}%s", hashes[htype].name, hashed_pw);